{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 刘晓明第二周基础作业----皮马印第安人糖尿病分类器练习"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1) 训练数据和测试数据分割（随机选择20%的数据作为测试集）；（10分）\n",
    "2) 适当的特征工程（及数据探索）;（10分）\n",
    "3) Logistic回归，并选择最佳的正则函数（L1/L2）及正则参数；（30分）\n",
    "4) 线性SVM，并选择最佳正则参数，比较与Logistic回归的性能，简单说明原因。（20分）\n",
    "5) RBF核的SVM，并选择最佳的超参数（正则参数、RBF核函数宽度）；（30分）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 首先 import 必要的模块\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "#竞赛的评价指标为logloss\n",
    "from sklearn.metrics import log_loss  \n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取数据 & 数据探索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pregnancies</th>\n",
       "      <th>Glucose</th>\n",
       "      <th>BloodPressure</th>\n",
       "      <th>SkinThickness</th>\n",
       "      <th>Insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>DiabetesPedigreeFunction</th>\n",
       "      <th>Age</th>\n",
       "      <th>Outcome</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6</td>\n",
       "      <td>148</td>\n",
       "      <td>72</td>\n",
       "      <td>35</td>\n",
       "      <td>0</td>\n",
       "      <td>33.6</td>\n",
       "      <td>0.627</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>85</td>\n",
       "      <td>66</td>\n",
       "      <td>29</td>\n",
       "      <td>0</td>\n",
       "      <td>26.6</td>\n",
       "      <td>0.351</td>\n",
       "      <td>31</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8</td>\n",
       "      <td>183</td>\n",
       "      <td>64</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>23.3</td>\n",
       "      <td>0.672</td>\n",
       "      <td>32</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>89</td>\n",
       "      <td>66</td>\n",
       "      <td>23</td>\n",
       "      <td>94</td>\n",
       "      <td>28.1</td>\n",
       "      <td>0.167</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>137</td>\n",
       "      <td>40</td>\n",
       "      <td>35</td>\n",
       "      <td>168</td>\n",
       "      <td>43.1</td>\n",
       "      <td>2.288</td>\n",
       "      <td>33</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Pregnancies  Glucose  BloodPressure  SkinThickness  Insulin   BMI  \\\n",
       "0            6      148             72             35        0  33.6   \n",
       "1            1       85             66             29        0  26.6   \n",
       "2            8      183             64              0        0  23.3   \n",
       "3            1       89             66             23       94  28.1   \n",
       "4            0      137             40             35      168  43.1   \n",
       "\n",
       "   DiabetesPedigreeFunction  Age  Outcome  \n",
       "0                     0.627   50        1  \n",
       "1                     0.351   31        0  \n",
       "2                     0.672   32        1  \n",
       "3                     0.167   21        0  \n",
       "4                     2.288   33        1  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 读取数据\n",
    "# path to where the data lies\n",
    "dpath = './'\n",
    "train = pd.read_csv(dpath +\"diabetes0.csv\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 768 entries, 0 to 767\n",
      "Data columns (total 9 columns):\n",
      "Pregnancies                 768 non-null int64\n",
      "Glucose                     768 non-null int64\n",
      "BloodPressure               768 non-null int64\n",
      "SkinThickness               768 non-null int64\n",
      "Insulin                     768 non-null int64\n",
      "BMI                         768 non-null float64\n",
      "DiabetesPedigreeFunction    768 non-null float64\n",
      "Age                         768 non-null int64\n",
      "Outcome                     768 non-null int64\n",
      "dtypes: float64(2), int64(7)\n",
      "memory usage: 54.1 KB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pregnancies</th>\n",
       "      <th>Glucose</th>\n",
       "      <th>BloodPressure</th>\n",
       "      <th>SkinThickness</th>\n",
       "      <th>Insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>DiabetesPedigreeFunction</th>\n",
       "      <th>Age</th>\n",
       "      <th>Outcome</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>3.845052</td>\n",
       "      <td>120.894531</td>\n",
       "      <td>69.105469</td>\n",
       "      <td>20.536458</td>\n",
       "      <td>79.799479</td>\n",
       "      <td>31.992578</td>\n",
       "      <td>0.471876</td>\n",
       "      <td>33.240885</td>\n",
       "      <td>0.348958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>3.369578</td>\n",
       "      <td>31.972618</td>\n",
       "      <td>19.355807</td>\n",
       "      <td>15.952218</td>\n",
       "      <td>115.244002</td>\n",
       "      <td>7.884160</td>\n",
       "      <td>0.331329</td>\n",
       "      <td>11.760232</td>\n",
       "      <td>0.476951</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.078000</td>\n",
       "      <td>21.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>99.000000</td>\n",
       "      <td>62.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>27.300000</td>\n",
       "      <td>0.243750</td>\n",
       "      <td>24.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>117.000000</td>\n",
       "      <td>72.000000</td>\n",
       "      <td>23.000000</td>\n",
       "      <td>30.500000</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.372500</td>\n",
       "      <td>29.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>6.000000</td>\n",
       "      <td>140.250000</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>127.250000</td>\n",
       "      <td>36.600000</td>\n",
       "      <td>0.626250</td>\n",
       "      <td>41.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>17.000000</td>\n",
       "      <td>199.000000</td>\n",
       "      <td>122.000000</td>\n",
       "      <td>99.000000</td>\n",
       "      <td>846.000000</td>\n",
       "      <td>67.100000</td>\n",
       "      <td>2.420000</td>\n",
       "      <td>81.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Pregnancies     Glucose  BloodPressure  SkinThickness     Insulin  \\\n",
       "count   768.000000  768.000000     768.000000     768.000000  768.000000   \n",
       "mean      3.845052  120.894531      69.105469      20.536458   79.799479   \n",
       "std       3.369578   31.972618      19.355807      15.952218  115.244002   \n",
       "min       0.000000    0.000000       0.000000       0.000000    0.000000   \n",
       "25%       1.000000   99.000000      62.000000       0.000000    0.000000   \n",
       "50%       3.000000  117.000000      72.000000      23.000000   30.500000   \n",
       "75%       6.000000  140.250000      80.000000      32.000000  127.250000   \n",
       "max      17.000000  199.000000     122.000000      99.000000  846.000000   \n",
       "\n",
       "              BMI  DiabetesPedigreeFunction         Age     Outcome  \n",
       "count  768.000000                768.000000  768.000000  768.000000  \n",
       "mean    31.992578                  0.471876   33.240885    0.348958  \n",
       "std      7.884160                  0.331329   11.760232    0.476951  \n",
       "min      0.000000                  0.078000   21.000000    0.000000  \n",
       "25%     27.300000                  0.243750   24.000000    0.000000  \n",
       "50%     32.000000                  0.372500   29.000000    0.000000  \n",
       "75%     36.600000                  0.626250   41.000000    1.000000  \n",
       "max     67.100000                  2.420000   81.000000    1.000000  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## 各属性的统计特性\n",
    "train.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb46aeb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.Outcome);\n",
    "pyplot.xlabel('Outcome');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb43d8d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# age分布，看看各类样本分布是否均衡\n",
    "sns.countplot(train.Age);\n",
    "#sns.distplot(train.Age,bins=30);\n",
    "pyplot.xlabel('age');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21b56a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.BloodPressure);\n",
    "pyplot.xlabel('BloodPressure');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAEKCAYAAAAvlUMdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XmcHlWd7/HPt/fO3tl3kpAOEsCARBQdcUEUcCTqwBD0hThyh5m5MqDj3DtwZ3QcHEdRXK+MIwIjclVgUMeoaFRAcA0EkCVAoBNC0mRrsneS3n/3j6omD51eqjtdveX7fr3q9VSdOnWeX+WB/HKqTp1SRGBmZtbfigY7ADMzG5mcYMzMLBdOMGZmlgsnGDMzy4UTjJmZ5cIJxszMcuEEY2ZmuXCCMTOzXDjBmJlZLkoGO4DBNHny5Jg3b95gh2FmNqw89NBDL0bElJ7qHdUJZt68eaxevXqwwzAzG1YkPZ+lni+RmZlZLpxgzMwsF04wZmaWCycYMzPLhROMmZnlwgnGzMxy4QRjZma5yDXBSDpb0lpJNZKu6mR/uaTb0/2rJM1LyydJuldSvaSvFtQfK+mPBcuLkr6U7vuApLqCff8jz3MzM7Pu5fagpaRi4HrgLKAWeFDSioh4sqDapcCuiFgoaTlwLXAh0AB8DDgxXQCIiH3AyQXf8RDw/YL2bo+Iy3M6JTMz64U8n+Q/DaiJiPUAkm4DlgGFCWYZ8Il0/U7gq5IUEfuB30ha2FXjkqqBqcCvc4h90H1n1cYe67z3NXMHIBIzs77J8xLZLGBTwXZtWtZpnYhoAfYAkzK2fxFJjyUKyv5M0mOS7pQ0p29hm5lZf8gzwaiTsuhDna4sB75bsP0jYF5EvBL4JXBLp0FJl0laLWl1XV1dxq8yM7PeyjPB1AKFvYjZwOau6kgqAcYDO3tqWNISoCQiHmovi4gdEdGYbn4DOLWzYyPihohYGhFLp0zpcTJQMzProzwTzINAtaT5kspIehwrOtRZAVySrp8P3NPhkldXLuLlvRckzSjYPA94qk9Rm5lZv8jtJn9EtEi6HFgJFAM3R8QaSdcAqyNiBXATcKukGpKey/L24yVtAMYBZZLeBbytYATanwPndvjKKySdB7SkbX0gr3MzM7Oe5fo+mIi4C7irQ9nHC9YbgAu6OHZeN+0u6KTsauDqvsZqZmb9y0/ym5lZLpxgzMwsF04wZmaWCycYMzPLhROMmZnlwgnGzMxy4QRjZma5cIIxM7NcOMGYmVkunGDMzCwXTjBmZpYLJxgzM8uFE4yZmeXCCcbMzHLhBGNmZrlwgjEzs1w4wZiZWS6cYMzMLBdOMGZmlgsnGDMzy0WuCUbS2ZLWSqqRdFUn+8sl3Z7uXyVpXlo+SdK9kuolfbXDMb9K2/xjukztri0zMxscuSUYScXA9cA5wGLgIkmLO1S7FNgVEQuBLwLXpuUNwMeAv++i+fdFxMnpsr2HtszMbBDk2YM5DaiJiPUR0QTcBizrUGcZcEu6fidwpiRFxP6I+A1Josmq07b6Hr6ZmR2JPBPMLGBTwXZtWtZpnYhoAfYAkzK0/Z/p5bGPFSSRvrZlZmY5yDPBdNZ7iD7U6eh9EXES8IZ0ubg3bUm6TNJqSavr6up6+CozM+urPBNMLTCnYHs2sLmrOpJKgPHAzu4ajYgX0s99wHdILsVlbisiboiIpRGxdMqUKb08JTMzyyrPBPMgUC1pvqQyYDmwokOdFcAl6fr5wD0R0WUPRlKJpMnpeinwp8ATfWnLzMzyVZJXwxHRIulyYCVQDNwcEWskXQOsjogVwE3ArZJqSHoby9uPl7QBGAeUSXoX8DbgeWBlmlyKgV8C30gP6bItMzMbeLklGICIuAu4q0PZxwvWG4ALujh2XhfNntpF/S7bMjOzgecn+c3MLBdOMGZmlgsnGDMzy4UTjJmZ5cIJxszMctFjgpE0WlJRur5I0nnpMGEzM7MuZenB3A9USJoF3A38BfDNPIMyM7PhL0uCUUQcAN4D/N+IeDfJ9PtmZmZdypRgJJ0OvA/4SVqW6wOaZmY2/GVJMB8GrgZ+kE71sgC4N9+wzMxsuOuxJxIR9wH3SRqdbq8Hrsg7MDMzG96yjCI7XdKTwFPp9hJJ/557ZGZmNqxluUT2JeDtwA6AiHgUOCPPoMzMbPjL9KBlRGzqUNSaQyxmZjaCZBkNtknS64BIXxx2BenlMjMzs65k6cH8NfAhYBbJa4lPTrfNzMy6lGUU2Yskz8CYmZlllmUU2S2SJhRsV0m6Od+wzMxsuMtyieyVEbG7fSMidgGn5BeSmZmNBFkSTJGkqvYNSRPxVDFmZtaDLIni88DvJN2Zbl8AfCq/kMzMbCTosQcTEd8Czge2AduB90TErVkal3S2pLWSaiRd1cn+ckm3p/tXSZqXlk+SdK+keklfLag/StJPJD0taY2kzxTs+4CkOkl/TJf/kSVGMzPLR9ZLXU8Du9rrS5obERu7O0BSMXA9cBbJ8OYHJa2IiCcLql0K7IqIhZKWA9cCFwINwMeAE9Ol0HURcW/6TM7dks6JiJ+m+26PiMsznpOZmeUoyyiyvyXpvfwC+DHJlP0/ztD2aUBNRKyPiCbgNmBZhzrLgFvS9TuBMyUpIvZHxG9IEs1LIuJARNybrjcBDwOzM8RiZmYDLMtN/iuB4yLihIh4ZUScFBGvzHDcLKBwipnatKzTOhHRAuwBJmVom3To9DtJ3rLZ7s8kPSbpTklzujjuMkmrJa2uq6vL8lVmZtYHWRLMJpK/+HtLnZRFH+oc3rBUAnwX+Er6+gCAHwHz0uT3Sw71jF7eeMQNEbE0IpZOmTKlp68yM7M+ynIPZj3wK0k/ARrbCyPiCz0cVwsU9iJmA5u7qFObJo3xwM4MMd0APBsRXyqIZ0fB/m+Q3M8xM7NBkqUHs5Hk/ksZMLZg6cmDQLWk+ekN+eXAig51VgCXpOvnA/dERLc9GEn/SpKIPtyhfEbB5nl4Qk4zs0GVZS6yfwGQNDoi9mdtOCJaJF0OrASKgZvTVy5fA6yOiBXATcCtkmpIei7L24+XtAEYB5RJehfwNmAv8I8ko9oelgTw1Yi4EbhC0nlAS9rWB7LGamZm/a/HBCPpdJJEMAaYK2kJ8FcR8T97OjYi7gLu6lD28YL1BpIHNzs7dl5XIXVR/2rg6p5iMjOzgeE3WpqZWS78RkszM8uF32hpZma58BstzcwsF932YNL5xC6OCL/R0szMeqXbHkxEtHL4/GFmZmY9ynIP5rfplPm3Ay89BxMRD+cWlZmZDXtZEszr0s9rCsoCeEv/h2NmZiNFT/dgioCvRcQdAxSPmZmNED3dg2kD/AIvMzPrtSzDlH8h6e8lzZE0sX3JPTIzMxvWstyD+WD6WfjsSwAL+j8cMzMbKbLMpjx/IAIxM7ORJctsyu/vrDwivtX/4ZiZ2UiR5RLZqwvWK4AzgYcBJxgzM+tSlktkf1u4LWk8cGtuEZmZ2YiQabr+Dg4A1f0diJmZjSxZ7sH8iGTUGCQJaTHgBy/NzKxbWe7BXFew3gI8HxG1OcVjZmYjRJYEsxHYEhENAJIqJc2LiA25RmZmZsNalnsw/wW0FWy3pmU9knS2pLWSaiRd1cn+ckm3p/tXSZqXlk+SdK+k+nQm58JjTpX0eHrMVyQpLZ8o6ReSnk0/q7LEaGZm+ciSYEoioql9I10v6+mg9GVl1wPnkNy3uUjS4g7VLgV2RcRC4IvAtWl5A/Ax4O87afprwGUkAw2qgbPT8quAuyOiGrg73TYzs0GSJcHUSTqvfUPSMuDFDMedBtRExPo0Kd3G4S8vWwbckq7fCZwpSRGxPyJ+Q5JoXiJpBjAuIn4fEUHyLM67OmnrloJyMzMbBFnuwfw18O2CS1W1QKdP93cwC9hUsF0LvKarOhHRImkPMImuE9istJ3CNmel69MiYkva1hZJUzPEaGZmOcnyoOU64LWSxgCKiH0Z21ZnzfWhzpHUP7wB6TKSS2zMnTu3N4eamVkv9HiJTNK/SZoQEfURsU9SlaR/zdB2LTCnYHs2sLmrOpJKgPHAzh7anN1Fm9vSS2jtl9K2d9ZARNwQEUsjYumUKVMynIaZmfVFlnsw50TE7vaNiNgFnJvhuAeBaknzJZUBy4EVHeqsAC5J188H7knvrXQqvQS2T9Jr09Fj7wd+2ElblxSUm5nZIMhyD6ZYUnlENELyHAxQ3tNB6T2Vy4GVQDFwc0SskXQNsDoiVgA3AbdKqiHpuSxvP17SBmAcUCbpXcDbIuJJ4G+AbwKVwE/TBeAzwB2SLiV5dueCDOdmZmY5yZJg/h9wt6T/JLnf8UEOjdbqVkTcBdzVoezjBesNdJEIImJeF+WrgRM7Kd9BMtOzmZkNAVlu8n9W0mPAW9OiT0bEynzDMjOz4S5LDwbgEaCUpAfzSH7hmJnZSJFlFNmfAw+Q3IT/c2CVpPPzDszMzIa3LD2YfwReHRHbASRNAX5J8uS9mZlZp7IMUy5qTy6pHRmPMzOzo1iWHszPJK0EvptuX0iHkWFmZmYdZRlF9r8kvQf4E5KpWm6IiB/kHpmZmQ1rmUaRRcT3ge/nHIuZmY0gvpdiZma5cIIxM7NcdJlgJN2dfl7bVR0zM7OudHcPZoakNwLnSbqNDu9iiYiHc43MzMyGte4SzMdJ3ms/G/hCh30BvCWvoMzMbPjrMsFExJ3AnZI+FhGfHMCYzMxsBMjyHMwnJZ0HnJEW/SoifpxvWGZmNtxlmezy08CVwJPpcmVaZmZm1qUsD1q+Azg5ItoAJN1CMmX/1XkGZmZmw1vW52AmFKyPzyMQMzMbWbL0YD4NPCLpXpKhymfg3ouZmfUgy03+70r6FfBqkgTzDxGxNe/AzMxseMt0iSwitkTEioj4YW+Si6SzJa2VVCPpqk72l0u6Pd2/StK8gn1Xp+VrJb09LTtO0h8Llr2SPpzu+4SkFwr2nZs1zqGmubWNXQeaBjsMM7Mjkmk25b6QVAxcD5wF1AIPSloREU8WVLsU2BURCyUtB64FLpS0GFgOnADMBH4paVFErAVOLmj/BaDw1QFfjIjr8jqngXLdyrV8/f71nDJnAm8/YTrjKksHOyQzs17Lc7LL04CaiFgfEU3AbcCyDnWWAbek63cCZ0pSWn5bRDRGxHNATdpeoTOBdRHxfG5nMAj2N7bwnVUbmTymjMdf2MMXfvEMG3fsH+ywzMx6rdsEI6lI0hN9bHsWsKlguzYt67RORLQAe4BJGY9dzqG3bLa7XNJjkm6WVNXHuAfV9x6uZV9jC+efOocPv3URxUVi1XM7BzssM7Ne6zbBpM++PCppbh/aVidlkbFOt8dKKgPOA/6rYP/XgGNJLqFtAT7faVDSZZJWS1pdV1fXdfSDoK0t+ObvNrBk9njmVFUycXQZi2eM46mte2lpaxvs8MzMeiXLJbIZwBpJd0ta0b5kOK4WmFOwPRvY3FUdSSUkz9jszHDsOcDDEbGtvSAitkVEa5oUv8Hhl9Ta690QEUsjYumUKVMynMbAuf/ZOtbX7ecvXj+f5EohnDBzHA3Nbayv82UyMxtestzk/5c+tv0gUC1pPsnN+OXAezvUWQFcAvweOB+4JyIiTWDfkfQFkpv81cADBcddRIfLY5JmRMSWdPPdQF8v7Q2aW363gSljyzn3pBnc+VAtAMdOHUN5SRFrNu9h0bSxgxyhmVl2WZ6DuU/SMUB1RPxS0iigOMNxLZIuB1am9W+OiDWSrgFWR8QK4CbgVkk1JD2X5emxayTdQTL3WQvwoYhoBUi//yzgrzp85WclnUxyKW1DJ/uHtKaWNn5bs4P3n34MZSWHOpalxUUcN30sT27ey7KTgyJ1dvXQzGzo6THBSPpL4DJgIsk9jlnAf5CM4upWRNwF3NWh7OMF6w3ABV0c+yngU52UHyAZCNCx/OKe4hnKnt66l6bWNk6Ze/jYhBNmjuex2j1seHE/C6aMGYTozMx6L8s9mA8Brwf2AkTEs8DUPIM6Gj1auweAV84+fKq346aNpaRIrNm8d6DDMjPrsywJpjF9jgV46WZ8x9FgdoQe27SbiaPLmF1Vedi+spIiFk4dwzPb9g1CZGZmfZMlwdwn6f8AlZLOIhka/KN8wzr6PFa7h1fOHv/S6LGOjpk0mh37mzjQ2DLAkZmZ9U2WBHMVUAc8TnLj/C7gn/IM6mhzoKmFZ7fv45WzJ3RZZ07as9m068BAhWVmdkSyjCJrS18ytork0tjaiPAlsn70xAt7aQtY0sn9l3azqioRsGnXQY6bPm7ggjMz66Mso8jeQTJqbB3JE/bzJf1VRPw07+COFo/V7gbotgdTXlLMtHEVbNrpHoyZDQ9ZHrT8PPDmiKgBkHQs8BPACaafPFq7h5njK5gytrzbenMmVqa9HT8PY2ZDX5Z7MNvbk0tqPbA9p3iOSo/V7u6299JuTtUoDja3sqPe74oxs6Gvyx6MpPekq2sk3QXcQXIP5gKSaWCsH+w+0MTzOw5w4avn9Fh39sRRQHKjv6fejpnZYOvuEtk7C9a3AW9M1+uAYTkV/lD0+AvJA5ZLMvRgpo4tp7ykiE07D/CqTp74NzMbSrpMMBHxFwMZyNGqZns9QKaJLIskZlVVUrvrYN5hmZkdsSyjyOYDfwvMK6wfEeflF9bRY11dPeMqSpg8pixT/TlVo/j1s3U0t/r9MGY2tGUZRfbfJLMe/wjw32r9bH1dMoFlV0/wdzSnahRtAZt3uxdjZkNblgTTEBFfyT2So9S6unr+ZGH2F5/NSp/of8EJxsyGuCwJ5suS/hn4OdDYXhgRD+cW1VGivrGFbXsbWTBldOZjxlWUMLa8hBd8H8bMhrgsCeYk4GLgLRy6RBbpth2B9XXJDf5je/GOF0nMnFDpHoyZDXlZEsy7gQWFU/Zb/1hftx+AY3vRg4HkMtkz2/ZxoKmFUWVZfkIzs4GX5Un+R4GeH9KwXltXV09xkZg7aVSvjps1oZIAnvQLyMxsCMvyz99pwNOSHuTl92A8TPkIra/bz5yqSspLint13KwJyY3+x2r3sHTexDxCMzM7YlkSzD/nHsVRal1dfa/uv7QbV1nK2IoSnkhnATAzG4qyvA/mvoEI5GjT2hY89+J+3lA9uU/Hz5pQ+dI0M2ZmQ1GP92Ak7ZO0N10aJLVKynTxX9LZktZKqpF0VSf7yyXdnu5fJWlewb6r0/K1kt5eUL5B0uOS/ihpdUH5REm/kPRs+jmkJ+vavPsgjS1tferBQJJgaurq2e9XKJvZENVjgomIsRExLl0qgD8DvtrTcZKKgeuBc4DFwEWSFneodimwKyIWAl8Erk2PXQwsB04Azgb+PW2v3Zsj4uSIWFpQdhVwd0RUA3en20PWuvYhylP7nmAi4MktvtFvZkNTllFkLxMR/022Z2BOA2oiYn06xPk2YFmHOsuAW9L1O4EzlcyZsgy4LSIaI+I5oCZtrzuFbd0CvCtDjINmXTpEecHk3g1Rbjez6tCNfjOzoSjLZJfvKdgsApaSPGjZk1nApoLtWuA1XdWJiBZJe4BJafkfOhw7K10P4OeSAvh6RNyQlk+LiC1pW1skTe3ifC4DLgOYO3duhtPIx7q6eiaMKmXi6GyTXHY0rqKU6eMqeHTT7n6OzMysf2QZRVb4XpgWYAOH90Q609nsjR0TU1d1ujv29RGxOU0gv5D0dETcnyGepJEkId0AsHTp0iyJMhfr6+pZMHl05kkuO3PqMVU89PyufozKzKz/ZBlF1tf3wtQCha9pnA1s7qJOraQSYDyws7tjI6L9c7ukH5BcOrsf2CZpRtp7mcEQf63zurr9vGlR9kkuO3PqMVX85PEtbN3TwPTxFf0UmZlZ/+julckf7+a4iIhP9tD2g0B1+j6ZF0hu2r+3Q50VwCXA74HzgXsiIiStAL4j6QvATKAaeEDSaKAoIval628DrunQ1mfSzx/2EN+g2dvQTN2+Rhb0cQRZu6XzkoFyq5/fyZ++cmZ/hGZm1m+668Hs76RsNMnIr0lAtwkmvadyObASKAZujog1kq4BVkfECpL3zNwqqYak57I8PXaNpDuAJ0kuy30oIlolTQN+kF5WKgG+ExE/S7/yM8Adki4FNgIX9Hz6g6Ovc5B1dPyMcVSWFrN6wy4nGDMbcrp7ZfLn29cljQWuBP6CZDTY57s6rkMbdwF3dSj7eMF6A10kgoj4FPCpDmXrgSVd1N8BnJklrsHWPovykfZgSouLWDJnvO/DmNmQ1O0w5fThxX8FHiNJRq+KiH+IiCF9f2OoW1dXT0mROKaXk1x2ZukxE3lyy14/cGlmQ06XCUbS50juo+wDToqIT0SE/6ncD9bX7WfuxFGUFvf6MaTDnDqvita28HBlMxtyuvsb7qMkN9j/CdhcMF3MvqxTxVjn1tXVH/HlsXavmluFBKt9mczMhpju7sEc+T+v7TCtbcGGFw/w5ld0+hxor42vLGXR1LFOMGY25DiJDLDaXQdoam3j2Mn904OB5DLZI8/voqW1refKZmYDxAlmgL00RHnqkQ1RLnRG9RT2NbbwwHM7+61NM7Mj5QQzwNpnUV7Qjz2YMxZNprykiJ8/ua3f2jQzO1JOMANsXV09E0eXUdXHSS47M6qshDMWTeHna7YSMWjTq5mZvYwTzABbV7e/z1P0d+dti6exeU8DT7zgAX5mNjQ4wQyw9XX1fX6LZXfOPH4aRYKVa7b2e9tmZn3hBDOA9hxo5sX6JhYc4RxknZk4uozT5k/k5086wZjZ0OAEM4Ce2b4PgEXTxubS/tsWT+eZbfU892Jn85SamQ0sJ5gB9My2JMFUT+v/S2QAbz9xOhLc9sDGXNo3M+sNJ5gB9MzWfYwuK2bWhMpc2p81oZJlS2byrd8/T92+xly+w8wsKyeYAfTMtnqqp409otck9+SKM6tpbGnl6/ety+07zMyycIIZQM9s28dxOd1/abdgyhjefcpsbv3D82zf25Drd5mZdccJZoC8WN/Ijv1NLJqeb4IBuOLMhbS0BV+6+9ncv8vMrCtOMAOk/Qb/opxu8Bc6ZtJo3n/6MXxn1Uauv7cm9+8zM+tMl9P1W/96ZmuSYPK+RNbun96xmF37m/jcyrUUSfz1Gxfkeu/HzKwjJ5gB8sz2esZXljJlbPmAfF9xkbjugiW0Blz7s6f5wSO1XHz6PN7yiqnMGFdBUZGTjZnlK9cEI+ls4MtAMXBjRHymw/5y4FvAqcAO4MKI2JDuuxq4FGgFroiIlZLmpPWnA23ADRHx5bT+J4C/BOrS5v9PRNyV5/n1xjNbkxv8A9mLKCku4ot/voQ3VE/mlt9t4GP//QQfA8pLiphdVcmkMeUcaGyhanQZE0eXMX1cBbMmVFLS4VXO733N3AGL2cxGjtwSjKRi4HrgLKAWeFDSioh4sqDapcCuiFgoaTlwLXChpMXAcuAEktc2/1LSIqAF+GhEPCxpLPCQpF8UtPnFiLgur3Pqq4jgmW37eOeSmQP6vd9ZdeiBy/eeNpcXdh/khd0H2VHfxK4DTWzf20h9YzNPbd1Ha1syC3NJkZgzcRQnzBzHiTPHM66ydEBjNrORI88ezGlATUSsB5B0G7AMKEwwy4BPpOt3Al9V8k/8ZcBtEdEIPCepBjgtIn4PbAGIiH2SngJmdWhzyNm2t5G9DS0cNwAjyLoiidlVo5hdNeqwfW0R7D3YzObdB9mw4wDPbt/Hjx/bwk8e20L1tDE8s20fC6eOoaiL3pd7OGbWmTwTzCxgU8F2LfCarupERIukPcCktPwPHY6dVXigpHnAKcCqguLLJb0fWE3S0xkSL6o/NIJs8BJMd4okJowqY8KoMhbPHA/MYPveBh6t3cPqDTv55u82MHVsOWceP40TZo7rMtGYmRXKc5hyZ38LdXwbVld1uj1W0hjge8CHI6L9BShfA44FTibp5Xy+06CkyyStlrS6rq6usyr9bu3WoZ1gOjN1XAVnLZ7G/zr7OC44dTYBfPeBjfz7vTWs3brXLzYzsx7lmWBqgTkF27OBzV3VkVQCjAd2dnespFKS5PLtiPh+e4WI2BYRrRHRBnyD5BLdYSLihohYGhFLp0yZcgSnl92jtbuZNaGSif34FsuBUlJUxClzq7jyzGouOHU2DS1t3PL75/n6/etZ/2L9YIdnZkNYngnmQaBa0nxJZSQ37Vd0qLMCuCRdPx+4J5J/Gq8AlksqlzQfqAYeSO/P3AQ8FRFfKGxI0oyCzXcDT/T7GfXRIxt3c/LcCYMdxhEpkjhlbhUfeesilp08k90Hmrjx189xy+828NQWv0XTzA6XW4KJiBbgcmAl8BRwR0SskXSNpPPSajcBk9Kb+H8HXJUeuwa4g+Tm/c+AD0VEK/B64GLgLZL+mC7npm19VtLjkh4D3gx8JK9z643text4YfdBTpkzvBNMu+Ii8Zr5k/jo247j7BOm8/zO/Zz7lV/zd3f8kdpdBwY7PDMbQnQ0X0tfunRprF69OtfvWLlmK39160N8729ex6nHVGU+rnCI8VB2sKmV7fUN/OdvN0DA+08/hg+9eSFVw/ByoJllI+mhiFjaUz3PRZazRzbuprRYnDBz3GCHkovKsmKuPud4fvX3b2LZyTO5+bfPccbn7uX6e2s40NQy2OGZ2SBygsnZwxt3sXjmeCpKiwc7lFzNnFDJ5y5Ywk+vPIPXzJ/I51au5YzP/opbfreBxpbWwQ7PzAaBE0yOWlrbeKx294i5/5LFcdPHcuMlr+Z7f3M6x04ZzT+vWMNbrruPO1ZvoqW1bbDDM7MB5Mkuc/T01n00NLdxyjAfQdaTru4XnbdkJotnjuPna7bxv+98jBt/vZ5PvPMEXrdw8gBHaGaDwQkmR49s2g3Aq+Zmv7k/kkiieupYFk4Zw5rNe/npE1t4742rOHHWeM49cToTRh0aCODpZsxGHieYHD2ycReTx5Qxu6pysEMZVJI4cdZ4jps+lvufreO+tXWs3bqXNy6ayhuqJ1Na7Cu1ZiORE0xOIoKHnt/FyXMm+EVfqdLiIs58xTReNbeKux7fwi+f2sajm3Zz/qmzBzs0M8uB/+mYk5rt9Ty/4wBvXDQw09EMJ1Wjynjfa47hA6+bR1NrG/9x3zo+/dOnaGhH/6USAAAMVklEQVT2aDOzkcQJJicr12wF4KzF0wc5kqFr0bSxXHlmNaceU8XX71vPO77yax7eOCQmwDazfuAEk5OVa7Zx8pwJTB9fMdihDGkVpcW851Wz+dYHT+NgUyvnf+13fPou92bMRgInmBy8sPsgj7+wh7ef4N5LVmcsmsLKj5zBha+ey9fvX8+57s2YDXtOMDlY+URyeeztJ0wb5EiGl7EVpXz6PSdx66Wn0djcxvlf+x3/5t6M2bDlUWQ5WLlmK9VTx7BgypjBDmXY6Piw5qV/Mp+fPbGVG+5fz/cfruUdJ83gE+ed4BF5ZsOIezD9bOf+Jh7csJOzT/TlsSNRUVrMu06ZxQdfP58IuOX3z3PxTQ/waPrwqpkNfU4w/ezbf3ietoBzT5rRc2Xr0cKpY7jyrdX86Stn8MTmPSy7/rdcdMMfuOfpbZ7bzGyI8yWyfrTnQDM3/Ho9bz1+GsfPGJnT8w+GkqIiXnfsZD79npP47gMbuek3z/HBb65m8phyzlsykzOPn8qpx1SN+BmrzYYbJ5h+dONv1rOvoYW/O2vRYIcyIo2tKOWyM47lktfN496n6/jBI7Xc+ocN3Pzb5ygvKWLJ7AksnjmO42eMZc7EUcypGsWM8RWUeCoas0HhBNNPdu5v4ubfPMc7TprB4hH6crHB1nEgwBsXTeW18yfx3I79rNtez6ZdB3lk0y6aWw+9pbVIML6ylAmjyphQWcobqiczc0Ils6oqk88Jle75mOXECaaffP7naznQ3MqH31o92KEcVcpLi3nF9HG8YnqS1Nsi2LW/iV0Hmtl9oImdB5rYfaCZXfubWP/ifh6t3U1bh7eETx5TxvzJo9NlDPMnj2bBlNHMnTjKycfsCDjB9IP/uG8d3161kQ++fj7V08YOdjhHtSKJSWPKmTSmvNP9rW3B3oPN7D6YJKDdB5vZub+Jun2NPLVlH/WNh17zLGDCqFKmjC1n6tiK9LOcv3nTsS971YCZdS7XBCPpbODLQDFwY0R8psP+cuBbwKnADuDCiNiQ7rsauBRoBa6IiJXdtSlpPnAbMBF4GLg4IpryPD+A7z6wkc/89GneuWQm//SO4/P+OjtCxUWianQZVaPLgNGH7W9obuXF+kZerG9KPxup29fI+rodtKRdn6/fv57JY8pZOHU0C6eOYeGUMcybPJrp4yuYNraCCaNK/byOGTkmGEnFwPXAWUAt8KCkFRHxZEG1S4FdEbFQ0nLgWuBCSYuB5cAJwEzgl5La75x31ea1wBcj4jZJ/5G2/bW8zq9mez2f/dnT/PzJbbxx0RQ+f8ESior8l8pwV1FazOyqUcyuGvWy8rYIdh9oZvu+BmZXVVKzvZ6a7fWs+ONm9ja0vKxuWUkR08aVM3FUGWMrShlbUZIupS/7HFdRwpjyUirLiigvKaaiNPksb/8sKaItgqaWNppa2mhMl70Nzew52MzedNlTsOw92PKy7Z37myguEiVForhIlBYXUVIsKkqLqSgp4sRZ41+KaVxhbJXtMZYypryEitIkHv83br2RZw/mNKAmItYDSLoNWAYUJphlwCfS9TuBryr5p98y4LaIaASek1STtkdnbUp6CngL8N60zi1pu7kkmG/+9jk++ZOnqCwt5qNnLeIvz1hAWYlHKo1kRRITR5cxcXTZy96+GRHU1TeyaecBtu5pZNveBu5du529B5s50NTKzv1NNLS00djcSkNzG005PbtTWiwqS4upKC2msqyYytJipo4tZ3ZVJW0BrW1tNLcGrW1Bc2sbDc2t7DnQzPZ929nb0ExDc7a4kiQlSouSRFVSnCTT9gRZUVL8UjIqLz2UNCtKi14qr+hYXlJMebqvOE2ERRJF4tB6mtgigii4hxYBwaGyaK9TsJ/D9ifHvHR8QXtSuqBD2+knJDEVKY2xKI1R7etK1w/VkQ61Xxhrp3F2sf+leNPyJJLkRX7t8RRJqIiX/tyKlHx3+77233xfQwvb9zVSt6+B42eM45hJh/fi+1OeCWYWsKlguxZ4TVd1IqJF0h5gUlr+hw7HzkrXO2tzErA7Ilo6qd/vXnVMFRe/9hj+9i0Lu7zWbyNXx9FshSpKiznnxK4fsm1tCxpbkmTT0NxKY0sbza1ttLQGLWkSeOmztY0iiZJivdQLKSkqeimJVJQWUVmaJJMjHYrd0tZGYxpTQ3MbB5tb0/iS7ZY0MbW0ttHclsTWHmNzS3CgqSk5h9aXn0Nza3Jsa8eRFTborll2Au8/ffgmmM760h3/K+uqTlflnf1f1F39w4OSLgMuSzfrJa3trF4W/9LXA7OZDLyY71cMOT7nke9oO18Youd8ybVwSd8PPyZLpTwTTC0wp2B7NrC5izq1kkqA8cDOHo7trPxFYIKkkrQX09l3ARARNwA39OWEBpKk1RGxdLDjGEg+55HvaDtfODrPuV2eNw4eBKolzZdURnLTfkWHOis4lETPB+6JiEjLl0sqT0eHVQMPdNVmesy9aRukbf4wx3MzM7Me5NaDSe+pXA6sJBlSfHNErJF0DbA6IlYANwG3pjfxd5IkDNJ6d5AMCGgBPhQRrQCdtZl+5T8At0n6V+CRtG0zMxskivDNt6FI0mXp5byjhs955DvazheOznNu5wRjZma58MMbZmaWCyeYIUjS2ZLWSqqRdNVgx9MfJM2RdK+kpyStkXRlWj5R0i8kPZt+VqXlkvSV9M/gMUmvGtwz6DtJxZIekfTjdHu+pFXpOd+eDlghHdRye3rOqyTNG8y4+0LSBEl3Sno6/a1PH+m/saSPpP9NPyHpu5IqRvJv3BtOMENMwRQ75wCLgYvSqXOGuxbgoxFxPPBa4EPpeV0F3B0R1cDd6TYk51+dLpeR47Q/A+BK4KmC7fZpjaqBXSTTGkHB1EnAF9N6w82XgZ9FxCuAJSTnPWJ/Y0mzgCuApRFxIsngo/Zpr0bqb5xdMvWCl6GyAKcDKwu2rwauHuy4cjjPH5LMKbcWmJGWzQDWputfBy4qqP9SveG0kDyTdTfJVEY/Jnko+EWgpOPvTTI68vR0vSStp8E+h16c6zjguY4xj+TfmEOzkUxMf7MfA28fqb9xbxf3YIaezqbYyW3am8GQXhY4BVgFTIuILQDp59S02kj5c/gS8L+B9sm+upvW6GVTJwHtUycNFwuAOuA/00uCN0oazQj+jSPiBeA6YCOwheQ3e4iR+xv3ihPM0JN52pvhSNIY4HvAhyNib3dVOykbVn8Okv4U2B4RDxUWd1I1MuwbDkqAVwFfi4hTgP0cuhzWmeF+vqT3k5YB80lmfh9Ncumvo5HyG/eKE8zQk2WKnWFJUilJcvl2RHw/Ld4maUa6fwawPS0fCX8OrwfOk7SB5F1FbyHp0UxIp0aCl5/XS+fcYeqk4aIWqI2IVen2nSQJZyT/xm8FnouIuohoBr4PvI6R+xv3ihPM0JNlip1hR5JIZld4KiK+ULCrcLqgwil+VgDvT0cavRbY036ZZbiIiKsjYnZEzCP5He+JiPfR9bRGXU2dNCxExFZgk6Tj0qIzSWbjGLG/McmlsddKGpX+N95+ziPyN+61wb4J5OXwBTgXeAZYB/zjYMfTT+f0JySXAh4D/pgu55Jcf74beDb9nJjWF8lounXA4ySjdAb9PI7g/N8E/DhdX0Ayt14N8F9AeVpekW7XpPsXDHbcfTjPk4HV6e/830DVSP+NSSZWfxp4ArgVKB/Jv3FvFj/Jb2ZmufAlMjMzy4UTjJmZ5cIJxszMcuEEY2ZmuXCCMTOzXDjBmOVEUn0/tzdP0hPp+lJJX+nP9s36W26vTDaz/ETEapLnTcyGLPdgzHIm6U2SflXwnpRvp099I+kzkp5M34dyXVr2TUnnFxx/WE8obbP9/TKfkHRz+h3rJV0xUOdm1h33YMwGxinACSRzUv0WeL2kJ4F3A6+IiJA04QjafwXwZmAssFbS1yKZG8ts0LgHYzYwHoiI2ohoI5kmZx6wF2gAbpT0HuDAEbT/k4hojIgXSSaTnHakAZsdKScYs4HRWLDeSvIyqhbgNJIZpt8F/Czd30L6/2Z6Ka2sL+0facBmR8oJxmyQpO/GGR8RdwEfJpkoEmADcGq6vgwoHfjozI6c/5VjNnjGAj+UVEEys/BH0vJvpOUPkMw+vH+Q4jM7Ip5N2czMcuFLZGZmlgsnGDMzy4UTjJmZ5cIJxszMcuEEY2ZmuXCCMTOzXDjBmJlZLpxgzMwsF/8f6QyAhCeEdx8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb8f7390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.distplot(train.Insulin,bins=30);\n",
    "pyplot.xlabel('Insulin');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5,1,'Distribution of 2h 血清胰岛素含量')"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb91ee10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pyplot.scatter(range(train.shape[0]),train[\"Insulin\"].values,color='green')\n",
    "pyplot.title(\"Distribution of 2h 血清胰岛素含量\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5,1,'Distribution of 2h血浆葡萄糖浓度')"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xbabb630>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pyplot.scatter(range(train.shape[0]),train[\"Glucose\"].values,color='green')\n",
    "pyplot.title(\"Distribution of 2h血浆葡萄糖浓度\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "各类样本不均衡。交叉验证对分类任务缺省的是采用StratifiedKFold，在每折采样时根据各类样本按比例采样"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据准备（Logistic）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "#由于Logistic采用5折交叉验证，即实现了随机选择20%的数据作为测试集\n",
    "\n",
    "y_train = train['Outcome']\n",
    "X_train = train.drop([\"Outcome\"], axis=1)\n",
    "\n",
    "#对于SVM,分割训练数据和测试数据，随机选取20%的数据作为测试集\n",
    "from sklearn.model_selection import train_test_split\n",
    "X_train_svm, X_test_svm, y_train_svm, y_test_svm = train_test_split(X_train, y_train, test_size = 0.2,random_state = 33)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据标准化\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "# 初始化特征的标准化器\n",
    "ss_X = StandardScaler()\n",
    "\n",
    "# 分别对训练和测试数据的特征进行标准化处理\n",
    "X_train = ss_X.fit_transform(X_train)\n",
    "X_train_svm = ss_X.fit_transform(X_train_svm)\n",
    "X_test_svm = ss_X.fit_transform(X_test_svm)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 模型训练"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 一、正则化的 Logistic Regression及参数调优"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "logistic回归的需要调整超参数有：C（正则系数，一般在log域（取log后的值）均匀设置候选参数）和正则函数penalty（L2/L1） \n",
    "目标函数为：J = sum(logloss(f(xi), yi)) + C* penalty \n",
    "\n",
    "在sklearn框架下，不同学习器的参数调整步骤相同：\n",
    "1.设置候选参数集合\n",
    "2.调用GridSearchCV\n",
    "3.调用fit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, error_score='raise',\n",
       "       estimator=LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
       "          penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n",
       "          verbose=0, warm_start=False),\n",
       "       fit_params=None, iid=True, n_jobs=1,\n",
       "       param_grid={'penalty': ['l1', 'l2'], 'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
       "       scoring='neg_log_loss', verbose=0)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "#需要调优的参数\n",
    "penaltys = ['l1','l2']\n",
    "Cs = [0.001, 0.01, 0.1, 1, 10, 100, 1000]\n",
    "tuned_parameters = dict(penalty = penaltys, C = Cs)\n",
    "\n",
    "lr_penalty= LogisticRegression()\n",
    "grid= GridSearchCV(lr_penalty, tuned_parameters,cv=5, scoring='neg_log_loss')\n",
    "grid.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\LXM\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\LXM\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\LXM\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\LXM\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\LXM\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\LXM\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\LXM\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([0.00100002, 0.00780044, 0.00060005, 0.0006    , 0.0006    ,\n",
       "        0.0006    , 0.00099998, 0.00100017, 0.0012001 , 0.00100012,\n",
       "        0.00080009, 0.00080009, 0.0006    , 0.00100002]),\n",
       " 'mean_score_time': array([0.01640096, 0.00060005, 0.00079994, 0.0012001 , 0.00060005,\n",
       "        0.00100012, 0.00040002, 0.00060005, 0.00099998, 0.0006    ,\n",
       "        0.0006001 , 0.0006    , 0.0006001 , 0.0006001 ]),\n",
       " 'mean_test_score': array([-0.69314718, -0.64214833, -0.6721329 , -0.52844007, -0.48659036,\n",
       "        -0.47999943, -0.48043734, -0.48017599, -0.48090088, -0.48086932,\n",
       "        -0.48095289, -0.48095123, -0.48095726, -0.48095956]),\n",
       " 'mean_train_score': array([-0.69314718, -0.6412946 , -0.67079105, -0.52380684, -0.47502562,\n",
       "        -0.46674403, -0.46228788, -0.46214818, -0.46206766, -0.46206619,\n",
       "        -0.46206531, -0.4620653 , -0.46206529, -0.46206529]),\n",
       " 'param_C': masked_array(data=[0.001, 0.001, 0.01, 0.01, 0.1, 0.1, 1, 1, 10, 10, 100,\n",
       "                    100, 1000, 1000],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_penalty': masked_array(data=['l1', 'l2', 'l1', 'l2', 'l1', 'l2', 'l1', 'l2', 'l1',\n",
       "                    'l2', 'l1', 'l2', 'l1', 'l2'],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'C': 0.001, 'penalty': 'l1'},\n",
       "  {'C': 0.001, 'penalty': 'l2'},\n",
       "  {'C': 0.01, 'penalty': 'l1'},\n",
       "  {'C': 0.01, 'penalty': 'l2'},\n",
       "  {'C': 0.1, 'penalty': 'l1'},\n",
       "  {'C': 0.1, 'penalty': 'l2'},\n",
       "  {'C': 1, 'penalty': 'l1'},\n",
       "  {'C': 1, 'penalty': 'l2'},\n",
       "  {'C': 10, 'penalty': 'l1'},\n",
       "  {'C': 10, 'penalty': 'l2'},\n",
       "  {'C': 100, 'penalty': 'l1'},\n",
       "  {'C': 100, 'penalty': 'l2'},\n",
       "  {'C': 1000, 'penalty': 'l1'},\n",
       "  {'C': 1000, 'penalty': 'l2'}],\n",
       " 'rank_test_score': array([14, 12, 13, 11, 10,  1,  3,  2,  5,  4,  7,  6,  8,  9]),\n",
       " 'split0_test_score': array([-0.69314718, -0.64371675, -0.66946739, -0.52816851, -0.48618048,\n",
       "        -0.4678555 , -0.46345795, -0.46129644, -0.46108746, -0.46088502,\n",
       "        -0.46086619, -0.4608487 , -0.46084444, -0.46084513]),\n",
       " 'split0_train_score': array([-0.69314718, -0.64085132, -0.66189542, -0.52529099, -0.47823734,\n",
       "        -0.47085398, -0.46684252, -0.46669378, -0.46662379, -0.46662226,\n",
       "        -0.46662151, -0.46662149, -0.46662149, -0.46662148]),\n",
       " 'split1_test_score': array([-0.69314718, -0.64113725, -0.67517494, -0.52518603, -0.47167175,\n",
       "        -0.47077815, -0.46426005, -0.46510588, -0.46463298, -0.46473286,\n",
       "        -0.46468782, -0.46469927, -0.46469052, -0.46469595]),\n",
       " 'split1_train_score': array([-0.69314718, -0.64188719, -0.67797602, -0.52532854, -0.47970425,\n",
       "        -0.47076994, -0.46692711, -0.46678157, -0.46671611, -0.4667146 ,\n",
       "        -0.4667139 , -0.46671388, -0.46671388, -0.46671388]),\n",
       " 'split2_test_score': array([-0.69314718, -0.64575466, -0.6680453 , -0.5512625 , -0.54752991,\n",
       "        -0.54301469, -0.56470348, -0.56426612, -0.56848408, -0.56834734,\n",
       "        -0.56880117, -0.56879096, -0.56883377, -0.5688357 ]),\n",
       " 'split2_train_score': array([-0.69314718, -0.63908575, -0.66162164, -0.5135644 , -0.45564336,\n",
       "        -0.44783203, -0.44194583, -0.44184498, -0.44173174, -0.44173047,\n",
       "        -0.44172922, -0.4417292 , -0.44172919, -0.44172919]),\n",
       " 'split3_test_score': array([-0.69314718, -0.63856226, -0.67581323, -0.50975335, -0.45503457,\n",
       "        -0.44706595, -0.44366018, -0.44377717, -0.44397692, -0.44400066,\n",
       "        -0.44402913, -0.4440332 , -0.44403306, -0.44403656]),\n",
       " 'split3_train_score': array([-0.69314718, -0.64333601, -0.67874616, -0.5309552 , -0.48382795,\n",
       "        -0.47509784, -0.47066653, -0.47052445, -0.47044458, -0.47044314,\n",
       "        -0.47044228, -0.47044226, -0.47044225, -0.47044225]),\n",
       " 'split4_test_score': array([-0.69314718, -0.64152376, -0.67221592, -0.52767402, -0.47216461,\n",
       "        -0.47104103, -0.46582527, -0.46617809, -0.46606319, -0.46612355,\n",
       "        -0.46612266, -0.4661268 , -0.46612726, -0.46612722]),\n",
       " 'split4_train_score': array([-0.69314718, -0.64131272, -0.67371601, -0.52389506, -0.47771522,\n",
       "        -0.46916638, -0.46505738, -0.46489609, -0.46482207, -0.46482048,\n",
       "        -0.46481966, -0.46481964, -0.46481963, -0.46481963]),\n",
       " 'std_fit_time': array([1.16800773e-07, 1.41061794e-02, 4.89940316e-04, 4.89901382e-04,\n",
       "        4.89901382e-04, 4.89901382e-04, 9.53674316e-08, 1.50789149e-07,\n",
       "        3.99994861e-04, 9.53674316e-08, 4.00042545e-04, 4.00042545e-04,\n",
       "        4.89901382e-04, 1.16800773e-07]),\n",
       " 'std_score_time': array([3.03043324e-02, 4.89940316e-04, 3.99971008e-04, 3.99994889e-04,\n",
       "        4.89940316e-04, 9.53674316e-08, 4.89920847e-04, 4.89940316e-04,\n",
       "        9.53674316e-08, 4.89901382e-04, 4.89979265e-04, 4.89901382e-04,\n",
       "        4.89979265e-04, 4.89979242e-04]),\n",
       " 'std_test_score': array([0.        , 0.00243715, 0.00305426, 0.0132657 , 0.0320587 ,\n",
       "        0.03276814, 0.04294523, 0.04285084, 0.04453765, 0.04448689,\n",
       "        0.04466604, 0.04466183, 0.04467972, 0.04467945]),\n",
       " 'std_train_score': array([0.        , 0.00138524, 0.00757197, 0.00566626, 0.00992564,\n",
       "        0.00965834, 0.01033381, 0.01031565, 0.01033127, 0.01033118,\n",
       "        0.01033136, 0.01033136, 0.01033136, 0.01033136])}"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# view the complete results (list of named tuples)\n",
    "grid.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.4799994349368312\n",
      "{'C': 0.1, 'penalty': 'l2'}\n"
     ]
    }
   ],
   "source": [
    "# examine the best model\n",
    "print(-grid.best_score_)\n",
    "print(grid.best_params_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果最佳值在候选参数的边缘，最好再尝试更大的候选参数或更小的候选参数，直到找到拐点。\n",
    "l2, c=100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\LXM\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\LXM\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\LXM\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\LXM\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\LXM\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\LXM\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\LXM\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAAELCAYAAAD+9XA2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xl8VNXZwPHfk8lKEpIQQggJYd8hYYmAgqAIQi1VEddWRavldaVKa7VqW7Xa6ku19q1UQBSwIq5FEdkRxKKigCCbAQQNAUJIyErWmTnvHzNAgAQmyUxuMnm+/UznLufe+1yEPDnnnnuOGGNQSiml6ivA6gCUUkr5B00oSimlvEITilJKKa/QhKKUUsorNKEopZTyCk0oSimlvMKShCIirURkpYjscX/HnKNsSxE5KCIvVdm2VkTSRWSL+9OmYSJXSilVE6tqKI8Aq40x3YDV7vWa/Bn4tJrtvzDG9Hd/sn0RpFJKKc9ZlVCuAua5l+cBV1dXSEQGAfHAigaKSymlVB1ZlVDijTGHAdzfZzVZiUgA8DzwUA3nmONu7vqDiIjvQlVKKeWJQF+dWERWAW2r2fWYh6e4B1hijDlQTb74hTHmoIhEAu8DtwCv1xDHZGAyQHh4+KCePXt6eHmllFIAmzZtyjHGxJ2vnFgxlpeIpAOXGGMOi0gCsNYY0+OMMvOBiwEnEAEEA/8yxjxyRrnbgDRjzH3nu25aWprZuHGjl+5CKaWaBxHZZIxJO185q5q8FgGT3MuTgA/PLGCM+YUxJtkY0xH4LfC6MeYREQkUkdYAIhIEjAe2N0zYSimlamJVQnkWGCMie4Ax7nVEJE1EZp/n2BBguYh8C2wBDgKv+DJYpZRS52dJk5dVtMlLKaVqr7E3eSmllPIzmlCUUkp5hSYUpZRSXqEJRSmllFf47MVGpdTZjNOJs7AQe14ejrx8HLk5OA7sxJlzEIwBDMYYMADGvY2T+87aXs02U7XsieWT5aqeq+q5T99nznfdauM741yqUYn5zTMEJnXz6TU0oShVR8bpxFlUhCM/H0de3qkkkZeHIz8PR37+6dvy8nAUFIDTaXXoPqZJpTFq+YsDmlCUagjGGJzFxSeTw9kJosr2fPf2/HxwOKo/YVAQgdFR2MJDsIUaQkJLsLXNw5ZQTGCIE1tYALaEDtiS+2DrMghbUh+wBYEIIBBw4jvA9S1yah8gJ7bD2WVEgIAq53K3bIuAnNouVbdTtYycVfb0a5x5jqrXVc2ZJhTld4wxOI+XuGoJefnu7zOSRDUJAru9+hMGBmKLjiYwJhpbdAwhnbtgi4nBFhPt3h6DLSoKGwXYSn/AVvQdAUe3IDnbwbhrIzGdIGk4JKZBUhq07QeBIQ33h6JUA9CEopokR3ExefPfpDLrsDs5VGlWysvDVFZWf6DNhi3alQhsMdEEd+xAWHR/d4KIObk98MR6TAwBERGcNUBp4WE4uBEyN8LB92DHN1BR7NoXGg2Jg6D3z1wJJHEQhMf69g9EqUZAE4pqchwFBWT8ajJl3357WiIISkoitF9fVzKIrj5BBERGnmrq8VTFcTi0pUoC2QSFB137AoKgbV9IvclV80hMg9gu2vyjmiVNKKpJsR87RsYdd1Kxdy9J/5pO5KhR3r2A0wk56e7EsREyN0H2TjDuZyXRHSB5aJWmqxQICvVuDEo1UZpQVJNRmZ1Nxu2/pPLgQZJefpmI4cPqf9KiI1VqHhvh4DdQUeTaFxIFiQPh4qmnEkh46/pfUyk/pQlFNQmVhw7x4+23Yz+aQ/tZMwkfPLj2J6kogcNbT2+6Kjjg2hcQCPF9IfWGU889Yrue6iGllDovTSiq0avIyCDjtttxFBWR/OpsWgwYcP6DnE7I3VOl6WojHNlRpekqGZIugKF3uxJIQgoEhfn2RpTyc5pQVKNWvm8fGbfdjqmoIHnuHML69Km+YPHRs5uuygtc+0Jaupquhj/ofnA+CCLaNNxNKNVMaEJRjVZZejoZt/8SAgJIfn0eod27n9rpdMLmebB/nSuB5Ge4tosN4vtAv4mnnnvEdtOmK6UagCYU1SiVbtvOgTvvREJDSZ4zh5DOnU4vsOtDWPwAtExyJY3Bk91NV6kQ3MKaoJVq5jShqEanZPM3HJg8GVtUFMlz5xDcvv3Zhb5bAi1i4YFvIcDW8EEqpc6i7QCqUTn+5QYy7ryTwNhYOrzx7+qTicMOe1ZA93GaTJRqRLSGohqN4s8+I/O++wlObk/ya68RGBdXfcEDX0JZPoc6DqU0/3vkxCCJAuL+H4CInLZ+cr/7LfaTe6u81X7W/mr2nTz/mfvPuF7VsqftP+P6J+Kyie3sIV6UakI0oahGoWjVKjIfnEpI164kv/YqgTExNZat/O5jprWOZcHWabB1WgNG2QCMexRfAoAAxP05tewaGVjk1L7TPu7tAWeUCZBT+wOwub8DTn4HSAAitpPLrvK2k8uuZHdi2XWOE/sCxObaJjb3p2pSlCr/f8qZZU6uVUm21Z5Dqm491cAiJ39nOD2Bn36G6rafEccZF5GzIm+6Jqf9lLaRNf+78gZNKMpyhUuWcPCh3xHatw/Js2Zhi4qqsWx+aR6/OfgxX0WGc1PPmxgYP9A9/9OpSaHMif9VmezprP3V7DOcvb+mc54o6zROyiqdFJVVUlhWQVGZnaKyytM/5Q6OV1Sedk0wiEB4sI2I0EBCgwIwODE4cRoHxjhx4gScOI3z5D5TdbnKNufJdQNV9oEDQ6V726l9iPO0ba519/4qy3Ji+YxvEZ3zpKkZ0aG/JhTl3/L/s5DDjz9Oi4EDSZoxA1tEeI1l9+Tt4f6Vd5Ftc/JMu7FcOeRRn8ZWbneQXVjOkcIysgrLOOJePlJYRlZBmXu5nNLKs+dEiQoLom3LUJJbhtC2VSjxLUOJjwolPjKEtlGu9dYRIdgCGu9vwMYYjAGnMTjd3yfWHU4nlU4HDqcD+xmfU5M6np6MT57XeUYyP7l84rqnJiA7ldirljh9Ci/XLwMnCwG4k/Gpsqd2VSlzxi8VGHPaeZ0NNvtkw1xnQLvOPr+GJhRlmbwFC8h68inCL7qIpOkvERBW85vqqzNW8+hnj9LCGOYcPkLqhKl1vq7Tacg9XnEqOZxIFgUnll2fvJKzh8APDgygbctQ2rYMpW9iFKN7nZ0s2kSGEhbc9DsLiLiagAL8qNlH+ZYmFGWJ3LlzyX72OSIuuYTEf7xIQEj1k00ZY5j57Uymb5lO39i+vJidQ3xMT4hKrLZ8UVnl6TWJwjKyC8vJKjixXEZ2UTl25+m/FYpA64gQ2rYMJSmmBYM6xNC2ZZVk0dK1LyosSB+cK1UDTSiqweXMmMHRF/9B5NixJE77XyQ4uNpyJZUlPL7+cVb+uJLxncfzp9T7Cf17HxjxO0orHLy8di8H8kqrND+Vcbzi7OanyNBA4t21ii5dWruSg7sm0dadLOIiQgi0aS96pepDE4pqMMYYjr74D3JnzqTllT+j3V/+ggRW/1fwUPEhpnwyhT35e/jNoN8wqc8kZOtbril1e4zjo28P8X+f7CUxOoy2UaH0SmjJJT3aVJssWgTrX3OlGoL+S1MNwhhD9rPPcWzePKKvu462Tz5R48yJG7M2MnXtVOxOO9Mvm87wxOGuHelLIDIBEvqzfMVGEqPD+O/Dl2oTlFKNhNbxlc8Zp5OsJ5/k2Lx5xNxyC22ferLGZPJO+jv8asWviAqJYv5P559KJvZy+P4T6D6O4goHn+3NYVzftppMlGpEtIaifMo4HBx+7HEKPviA2F/dSdzUqdUmgUpnJc999Rxvp7/N8MTh/O+I/yUyOPJUgR8+g4pi6HEFa9OzqbA7Gde3bQPeiVLqfDShKJ8xlZUcevhhCpcspfX999H6nnuqTSbHyo4xde1UNh3ZxO19b+fXA36N7cwxutKXQVAL6DSCZe/upHVEMAOTffuSllKqdjShKJ9wVlRw8MGpFK9eTZuHHiL2jl9WWy79WDpTPplCblkuf734r4zvPP7sQsZA+lLoMooygljzXTZX9k9s1C8FKtUc6TMU5XXO0lIy77mX4tWrif/D4zUmk5U/ruSWpbdgd9qZO25u9ckE4Mh2KMyEHj9h/d4cjlc4tLlLqUZIayjKq5zHj3Pg7nso+fprEp55muiJE88uY5y8vPVlZmydQUpcCi9e8iJxLWoYWRhctRMEuo1l2dJDRIYGcmHnWN/dhFKqTiypoYhIKxFZKSJ73N/VNoaLiENEtrg/i6ps7yQiG9zHvy0i1b8ZpxqUo6iIjDvupGTTJtpNm1ZtMimpLGHq2qnM2DqDq7pcxZyxc86dTMDVXTjpAuxhsazadYTRveIJDtTKtVKNjVX/Kh8BVhtjugGr3evVKTXG9Hd/rqyy/Tng7+7j84A7fBuuOh97Xh4Zt91O6Y4dJP79BaLG//SsMplFmdy89GbWHFjD7y74HX8e9meCbef5XaDwMBz6BnqM46sfjpFXUsnYPtrcpVRjZFVCuQqY516eB1zt6YHi6iY0CnivLscr77Pn5JBx6yTK9+yh/Uv/pOXll59V5qvDX3HTxzdx5PgRXh79Mrf0vsWzd0h2L3N997iC5duzCA0KYGT389RolFKWsCqhxBtjDgO4v9vUUC5URDaKyJciciJpxAL5xhi7ez0TqH6kQOVzlVlZ/HjzLVRkZtJ+5gwiRo48bb8xhgXfLWDyysm0Cm3Fgp8u4KJ2F3l+gd3LILoDztgeLN9xhJHd4/xiJF+l/JHPHsqLyCqguraJx2pxmmRjzCER6Qx8IiLbgMJqytU4oYCITAYmAyQnJ9fi0up8KjIPknHbbTjy8kie/QotBg06bX+lo5JnNjzD+3ve55KkS/jrxX8lIjiiFhcogX1rYdDtbD1YQFZhGQ/37eHdm1BKeY3PEooxZnRN+0TkiIgkGGMOi0gCkF3DOQ65v/eJyFpgAPA+EC0ige5aShJw6BxxzAJmAaSlpek0c15S8cMP/Hjb7ThLS0meO4ewfv1O259bmsvUtVPZnL2ZX/X7FfcNuI8AqWWFeN9asJdBj3Es25FFYIAwqme8925CKeVVVjV5LQImuZcnAR+eWUBEYkQkxL3cGhgG7DSuKdzWANee63jlO+V79vDDLbdgysvpMG/uWclkV+4ubvz4Rnbm7mTaiGlMGTil9skEXL27QqIwyRexfHsWF3VtTVRYkJfuQinlbVYllGeBMSKyBxjjXkdE0kRktrtML2CjiGzFlUCeNcbsdO97GJgqIntxPVN5tUGjb8bKdu7kx1snIQgd/v06oT17nrZ/2f5l3Lr0VgDm/WQe4zqNq9uFnE7YvRy6XsbunHJ+yC1hnPbuUqpRs+TFRmNMLnBZNds3Ane6lz8H+p1Zxr1vHzDYlzGqs5Vu3UrGryYTEBFOhzlzCO7Q4eQ+p3Hy0jcv8cq2VxjQZgAvXPICrcNa1/1ihzbD8WzocQXLtmchAmN6a3OXUo2ZvimvPFLy9dcc+J+7sMXG0mHuHIIST3WsK64o5vef/Z61mWuZ2G0ijw15jCBbPZum0peA2KDbaJat2U5ahxjiIqufJlgp1ThoQlHndfzzzzlwz70EtWtH8pzXCIo/VVPIKMxgyidT+KHwB34/+Pfc1PMm78xRkr4MOlxERkkIuw4X8vhPe9X/nEopn9LxK9Q5Fa1Zw4G77ia4Qwc6/Pv105LJF4e+4KaPbyKnLIeZY2by814/904yyfsRsndAj5+wfEcWgL4dr1QToAlF1ahw2XIy759CSPfudJg3l8BY14CMxhje2PkGd6+6mzYt2rDgpwsYkjDEexc+8XZ8d1d34b6JLWnfqoX3zq+U8glNKKpaBYsWcXDqVML69SN5zmvYoqMBqHBU8MfP/8hzXz/HyKSRvHHFG7SPbO/di6cvgdY9yA5KZNOPeYztrbUTpZoCfYaizpL37rtk/fFPtBg8mPb/mk5AeDgAOaU5PLDmAbYe3cpdqXdxd+rddXu/5FzKCuCH9XDhPSzfeQRA5z5RqonQhKJOc+zfb3DkmWcIv/hikv75fwSEhgKwI2cHU9ZMoaiiiOdHPs/lHc8eANIr9q4GZ6VrMMgVWXSOC6drm1oM16KUsow2eamTcmfP5sgzzxAx+jKSpr90Mpl8vO9jJi2bRKAE8vpPXvddMgHX85MWseS3SuWLfbmM69PWOw/6lVI+pzUUhTGGnJemkzN9Oi2vuIJ2zz2LBAXhcDr4v2/+j9e2v8ag+EG8cMkLtApt5btAHHbX2/E9rmB1ei4Op9HmLqWaEE0ozZwxhqPPP0/u7FeJmjCBhKf/jNhsFFUU8fC6h/ns4Gdc3/16Hhn8SP1fVjyfAxugLN81GOTGLNpFhdIvMcq311RKeY0mlGbMOJ0ceeYv5M2fT/RNN9L2D39AAgL4oeAHpqyZwoHCA/xh6B+4vsf1DRNQ+hKwBXM8aQTr3vySmwYna3OXUk2IJpRmyjgcZD3xBPnvvker226jzcO/Q0RYf3A9D617iEAJZNbls7ig7QUNF1T6Uug0gk9/LKPc7tTmLqWaGH0o3wwZu51Dj/ye/HffI/buu2jz8O8AmLdjHvesvoeE8AQWjF/QsMkkZw8c+971MuP2LGLDg7mgow+f1yilvE5rKM2Mqajg4G8fomjFCuIeeIDWd/0P5Y5ynvriKRZ9v4gxHcbw9LCnaRHUwG+mpy8BoLzL5Xzy8XeMT0nAFqDNXUo1JZpQmhFjDJkPTqV49Wrif/8IrSZNIrskmwfWPMC2nG3c2/9eJqdM9v7Lip5IXwZt+/F5ThjF5XbGanOXUk2OJpRmpPjTTylevZo2v/0NrSZNYtvRbfx6za8prizmxUte5LIOZ01R0zBKjsGBL2HEQyzfnkVESCAXdYm1JhalVJ3pM5RmwhhDzj9fIqh9e1pNmsRH33/EbctuI9gWzBtXvGFdMgHYswKME0e3cazYeYRRPdsQEmizLh6lVJ1oDaWZKF6zhrIdO4h/+s88v+UfzNs5j8FtB/P8yOeJDo22Nrj0JRCZwNfl7Tl2/LD27lKqidKE0gwYYzj60ksEJbfniZZrWLNzHTf1vImHLniIoAAfv6x4PvZy2PsJ9JvIsh3ZhAQGMLJ7nLUxKaXqRJu8moHi1asp37mLrOtGsObwOn4z6Dc8OuRR65MJwA//hYoiTPefsGJHFiO6xxEeor/nKNUUaULxc8bp5OhL0wnq0IG/tdpAl6gu3NL7FqvDOmX3MggMY3tIfw4VlDFOZ2ZUqsnShOLnilauovy778i4dijfF//AfQPuwxbQSB54G+N6O77LKJZ+l48tQLisVxuro1JK1ZEmFD9mnE5yXnqJoE4dmRb9Bb1je3NZsoW9uc50ZDsUHMD0cL0df2HnWKJbBFsdlVKqjjSh+LGiFSso37OHvVcPJLPkEFMGTGlcgy2mLwOE/THD2ZdzXF9mVKqJ06effso4HK6eXZ07MS3qcwZGDeSidhdZHdbp0pdAUhof73MgAmN7x1sdkVKqHrSG4qcKly2jYu/37LyqL9nlOUwZ2MhqJ0VZcGgzdB/H8p1ZDEyOoU3LUKujUkrVgyYUP2QcDnKm/4vALp2ZFrmeYYnDGBQ/yOqwTrd7GQBZCaPYfrCQsX20dqJUU6cJxQ8VLllKxb59bPlZd/IrC7l/wP1Wh3S29GUQncziw64ZGcdqd2GlmjxNKH7GOBzk/OtfBHbrwguRnzOmwxj6xPaxOqzTVZTAvjXQ4wqW7zxCr4SWdIgNtzoqpVQ9aULxM4Uff0zF/v1suKIjJY4y7u1/r9UhnW3/p2AvI6/9KDb+mKcvMyrlJzSh+BFjt3N0+nRs3bvyj4gvGN95PF2iu1gd1tnSl0BIS5YVdcEYdDBIpfyEJhQ/UvDRYip/zOC/Y9thx8ndqXdbHdLZnE7X85Oul7F01zE6tQ6ne3yE1VEppbxAE4qfMHY7OS+/TECPrvwzYgMTu00kKTLJ6rDOdugbOJ5NSafL+XxvDpf3iW9c3ZmVUnWmCcVPFHy4iMqMDFaPicNmC2RyymSrQ6pe+hIQG584UrA7jT4/UcqPWJJQRKSViKwUkT3u75gayjlEZIv7s6jK9rkisr/Kvv4NF33jYyoryXn5ZaRXN2ZGbuSmnjfRpkUjHWRx9zJIvpCPdpfRtmUoqUkWT+6llPIajxKKiAwTkXD38s0i8oKIdKjHdR8BVhtjugGr3evVKTXG9Hd/rjxj30NV9m2pRyxNXv4HH1CZmcnSUS0JC2rBL/v+0uqQqpefAUe2U9F1LJ/uPsrYPvEEBGhzl1L+wtMaystAiYikAr8DfgRer8d1rwLmuZfnAVfX41zNmqmoIPflGZjeXXktcgu39r6VmNBqK3zWS3e9Hf9l4AWUVTp1MEil/IynCcVujDG4EsE/jDH/ACLrcd14Y8xhAPd3Te0zoSKyUUS+FJEzk84zIvKtiPxdREJqupCITHafY+PRo0frEXLjlL/wAyoPHeLDkaFEhUZza+9brQ6pZulLoHV3FmaEEdMiiMEdW1kdkVLKizxNKEUi8nvgZuBjEbEB55w/VkRWicj2aj5X1SK+ZGNMGvBz4EUROfFSxe+BnsAFQCvg4ZpOYIyZZYxJM8akxcX511zlzooKcmbOwNG7K29G7eKOvncQEdxIu+CWFcIP/8XRbSyrdh1hdK94Am3aJ0Qpf+Lp8PU34PqhfocxJktEkoFp5zrAGDO6pn0ickREEowxh0UkAciu4RyH3N/7RGQtMAD4/kTtBigXkTnAbz28D79S8P772A8d5t2f9SCuRRtu7Hmj1SHV7PvV4Kzk2/BhFJXZ9WVGpfyQxzUUXE1dn4lId6A/sKAe110ETHIvTwI+PLOAiMScaMoSkdbAMGCnez3B/S24nr9sr0csTZKrdjKLyj5d+E/MXianTCYsMMzqsGqWvgzCWvHukQTCg20M69ra6oiUUl7maUJZB4SISCKuXlm3A3Prcd1ngTEisgcY415HRNJEZLa7TC9go4hsBdYAzxpjdrr3zReRbcA2oDXwdD1iaZLy330Xe1YWC4Y5SYxMYmK3iVaHVDOHHfYsx9ntclbsOsqlPdsQGtRI5rVXSnmNp01eYowpEZE7gH8aY/5XROrcVdcYkwucNbm5MWYjcKd7+XOgXw3Hj6rrtf2Bs7yc3JmzKO/TmcWtfuTp1GcIsp3zkZa1DmyA0jz2tbqYnOIKbe5Syk95WkMREbkQ+AXwsXub/oppkfy338Genc28iyroHN2F8Z3HWx3Sue1eCrZg3i/oQXBgAJf0aKQvXSql6sXThPIArp5VC40xO0SkM65mKNXAnGVl5Lwyi5J+nVnVOot7+9+LLaCR5/b0pZiOw1m0q4iLu7YmIsTTirFSqinxKKEYYz51v6n+LxGJMMbsM8ZM8XFsqhr5b7+N42gOrw05Tq9WvRjdocbOdI1Dzh7I3cvh+Es5mF+qLzMq5cc8HXqln4h8g6s31U4R2SQijWwaQP/nLC0l55XZFPfryLq4XO4fcD8B0sjf5UhfCsBHZanYAoTRvXTueKX8lac/jWYCU40xHYwxycBvgFd8F5aqTt5bb+PIyWHWBUUMbDOQ4YnDrQ7p/HYvg/h+vLsXhnRqRavwYKsjUkr5iKcJJdwYc/KZiTFmLaCTgDcgZ0kJua+8QkFKB76ML+D+Afc3/nlESo5Bxhcca38Ze7OLtXeXUn7O04SyT0T+ICId3Z/Hgf2+DEydLm/BAhzHjvFyWj7D2g0jrW2a1SGd356VYJysdgwE4PLemlCU8meeJpRfAnHAf4CF7uXbfRWUOp3z+HFyZ7/KsZRkNscf5/4B91sdkmfSl0BEW97IiKF/+2jaRoVaHZFSyoc86r9pjMkDtFeXRY69+SaOvDymT6hgdPJo+rRuAv0h7BWwdzXHu1/F1o1FPPKTnlZHpJTysXMmFBH5CDA17a9m0ivlZY7i4xyb/SrZqe3ZHp/FU/3vtTokz/z4X6go4nPbYADG6lS/Svm989VQ/tYgUaga5b3xBo6CAv41sILxncfTNaar1SF5Jn0pBIYx90gHerYNoFNr7cOhlL87Z0IxxnzaUIGoszmKi8mdM4fDqe3YnXCMv/W/2+qQPGMMpC+jvMNIvth5nPtGdbM6IqVUA/DoGYp7ZN8zm74KgI3A0+7BHpWX5f373zgLCnhpYCnXdLuW9pHtrQ7JM0d2QEEGW5N/idPAOG3uUqpZ8HRQpaWAA3jTvX4jILiSylzgZ16PrJlzFBWRO2cumaltyUgs4uWUyVaH5Lndrrfj5+f1IrlVCL0S6jNbtFKqqfA0oQwzxgyrsr5NRNYbY4aJyM2+CKy5OzbvdZyFhbw0qIQbe0wiPrwJDVmSvhR7u0Es2e/k9mFtG/8LmEopr/D0PZQIERlyYkVEBgMnJi+3ez2qZs5RWMixefP4ITWerMQW3NHvDqtD8lzRETi4iT1Rw6h0GO3dpVQz4mkN5U7gNRGJwNXUVQjcISLhwF99FVxzdWzuPJxFRUwfVMKtfe4mJjTG6pA8t3sZAO8fT6FNZAgD2kdbHJBSqqF4+mLj10A/EYnCNXtjfpXd7/gksmbKUVDAsddfZ29qa/LaO7m1961Wh1Q7u5dhotozf38EEwfFExCgzV1KNReeDl8fJSIv4JpPfpWIPO9OLsrLcufOxVlczMtpedzR7w4ig5vQA+3KUvh+DRlxl1Ba6WRcnwSrI1JKNSBPn6G8BhQB17s/hcAcXwXVXNnz8sib9zrf9W9FaYc4bup5k9Uh1c6+T8FeytKKVKLCghjSuZXVESmlGpCnz1C6GGMmVll/UkS2+CKg5uzYnLk4SkuZlVbO5JTHCAsMszqk2klfggmOZFZGO0b3jifI1sgn/1JKeZWn/+JLReTkbE4iMgwo9U1IzZM9L4+8N95gR2oUzo6JXNvtWqtDqh2nE3YvI6ftcI6VoXOfKNUMeVpDuRuYd+KhPHAMuM1XQTVHx157DUdpKa9eUM7d/R8myBZkdUi1c/gbKD7C2lZptAi2cXG31lZHpJRqYJ728toCpIpIS/d6oU+jambsubkce2M+W1MjCOocz/jO460OqfbSl2IkgJmHunBJjzhCg2xWR6SUamDnG75+ag3bATDGvOCET4YsAAAe10lEQVSDmJqd3Fdfw1lexpzBAfxmwH0EBnhacWxE0pdR3CaNvT8Gc7++zKhUs3S+n1xNqM9q02TPySHvzTfZlNKCqG6dGNNhjNUh1V5+BhzZxob29xNsC2BUzzZWR6SUssD5hq9/sqECaa5yZ7+Ks6Kcfw8O4PEB9xMgTbBn1O7lALx2tAfDusYSGdrEnv8opbyi1j+9RGSzLwJpjiqzs8lbsIANKaHE9xzAxYkXWx1S3aQvoTyqC5/nt9LeXUo1Y3X5dVjH0vCS3NmzcVZWMH9oBVMGTmmao/KWFcL+z9gWfiEBAqN7NaFRkZVSXlWXp78fez2KZqjySDZ5b73N5ykhdO59ARe0vcDqkOrm+0/AWcmCgr5c0LEVsREhVkeklLJIrWsoxpjHfRFIc5P7yis4HXYWDK1kysApVodTd+lLcYRE80FuojZ3KdXMeTo4ZJGIFJ7xOSAiC0Wks6+D9DeVWVnkvfMO/00JpG/KZfRt3dfqkOrGYYc9K9gbPQwHNp37RKlmztMmrxeAQ7imABZcUwC3BdJxDRx5iS+C81e5s2bhdFTyzlAbMwbcZ3U4dZf5FZQe44OgFFKTomgX3cTGHlNKeZWnTV7jjDEzjTFFxphCY8ws4ApjzNtAE5r9yXqVhw+T9+57rE2xccHAn9ItppvVIdVd+lJMQBD/zu7C5Vo7UarZ8zShOEXkehEJcH+ur7LP1PaiItJKRFaKyB73d7VJSUSSRWSFiOwSkZ0i0tG9vZOIbHAf/7aIBNc2BqvkzJyJ0+lg4UU27km9x+pw6id9KYdjBlFMC31+opTyOKH8ArgFyAaOuJdvFpEwoC5tNo8Aq40x3XBN2vVIDeVeB6YZY3oBg93XB3gO+Lv7+DygSUy6XnnwIPnvvc8nqcLFaRNIbplsdUh1l7MXcvew3D6Qbm0i6BIXYXVESimLeZRQjDH7jDE/M8a0NsbEuZf3GmNKjTH/rcN1rwLmuZfnAVefWUBEegOBxpiV7hiKjTEl4npZYxTw3rmOb4xyZs7CgZNFw4L4n5T/sTqc+tm9FIBXs3to7UQpBXjey6u7iKwWke3u9RQRqU/34XhjzGEA93d1gz91B/JF5D8i8o2ITBMRGxAL5Btj7O5ymUDiOWKfLCIbRWTj0aNH6xFy/VRkZpL//vusSoUxg2+ibXgT/yGcvoz8yO5kmjjt3aWUAjxv8noF+D1QCWCM+RZXT68aicgqEdlezecqD68ZCFwM/Ba4AOiMaw6W6l4nr/E5jjFmljEmzRiTFhcX5+GlvS9nxgzsYlg6vAV39rvTsji8ouQYZHzBZwEXkBQTRp92La2OSCnVCHjabbiFMearM4YGsddUGMAYM7qmfSJyREQSjDGHRSSBU89GqsoEvjHG7HMf8wEwFFc35WgRCXTXUpJwdWlutCoOHKBg4UJW9jeMH3orrUKb+Fzre1eBcTAvtxdjh7ZtmkPGKKW8ztMaSo6IdMFdExCRa4HD9bjuImCSe3kS8GE1Zb4GYkTkRLViFLDTGGOANcC15zm+0ch5eQb2AFg1MopJfSad/4DGLn0JZSGt2WTvqM9PlFIneZpQ7gVmAj1F5CDwAHBXPa77LDBGRPYAY9zriEiaiMwGMMY4cDV3rRaRbbiaul5xH/8wMFVE9uJ6pvJqPWLxqYoffyT/ww9Y3t9wzYV30DK4iTcP2Stgzyo2hQwhNiKMgcn6GpJSysXTJq+DwBxcNYNWQCGumsFTdbmoMSYXuKya7RuBO6usrwRSqim3D1c34kbv6L9exh4A60bG8lbPn1sdTv39uB4qiphf1ofLB8RjC9DmLqWUi6cJ5UMgH9hMI39e0ZiU799PwUeLWJYGNwy7ixZBLawOqf7Sl+KwhfBJWS9mae8upVQVniaUJGPMOJ9G4ody/vUydhtsGJXAgu7XWR1O/RkDu5fyXYtBBDnCGdo51uqIlFKNiKfPUD4XkX4+jcTPlO/bR8HHi1k6EG4edh/BtiYzOkzNsndCfgbvF/djdK94ggOb4HTFSimf8fQnwnBgk4iki8i3IrJNRL71ZWBN3dHp06kIhG9Gd+RnXX5mdTjeke56O/6j0hR9mVEpdRZPm7x+4tMo/Ez53r0ULlnK0iFw2/ApBAbUZWLMRih9KZktelHkiGVkd+teElVKNU4e/aQzxvzo60D8Sfb06ZQHwa6x3Xm44+VWh+MdRUcwBzex2HYjl3RvQ1iwzeqIlFKNjDaCe1nZ7t0ULVvO0kFwx/AHCRA/+SPesxzB8EFJqr7MqJSqlp/8tGs8sl/6J2XBsP+KFEYkjbA6HO9JX0ZBcFv2SjKX9qxuLE+lVHOnCcWLytLTOb5iFUsGwa+GT/WfMa4qSzHff8Jq50Au6hpHVFiQ1REppRohP3la3Dhk/fMflIYIWVcOYXBCk3iR3zP7PkXspSysSOEn2rtLKVUDraF4SdmuXZSuWsPiNPifYVOtDse7di+l3BbOV6YXY3rHWx2NUqqR0oTiJYf/7x+UhAiFE0bSL86P3gF1OiF9GV8F9Ce1QzxxkSFWR6SUaqQ0oXhB6Y4dlK35lMWDhcnDHrQ6HO86vAWKs/jP8RTGau8updQ5aELxgkP/+DvHQ6Fy4li6x3S3OhzvSl+KkwDWOPtzuTZ3KaXOQRNKPZVu207FuvV8PNjG5IsesDoc79u9lF1BvUhKTKR9Kz8YLVkp5TOaUOop8x9/oygMbDdcRXLLZKvD8a78A5C1jQ9LUhinvbuUUueh3YbroXTrVuz/3cCSSwK5a+j9VofjfbuXAbDKOYhZ+vxENXGVlZVkZmZSVlZmdSiNVmhoKElJSQQF1e1dM00o9ZDx4jQKwyDiphtoG+6HP3DTl3IoMAmJ7EbXNpFWR6NUvWRmZhIZGUnHjh3956VjLzLGkJubS2ZmJp06darTObTJq45KvvkG5xebWHphMLcPvtvqcLyvvAjzw2csKU/VoeqVXygrKyM2NlaTSQ1EhNjY2HrV4DSh1NGPf/9fCsMg7uZbiQ3zw5kLv/8EcVSwwj5QB4NUfkOTybnV989HE0odlGzeDF9tYdmwMG5J+5XV4fhG+lKOB0RyODKFfolRVkejlF+IiIg4uTxu3Diio6MZP358tWXvvfde+vfvT+/evQkLC6N///7079+f9957r1bX3Lx5M8uWLatX3J7SZyh1sP/5v1LYAtpP+hUtg1taHY73OR2Y3ctZZU9l9IBE/a1OKR946KGHKCkpYebMmdXunz59OgA//PAD48ePZ8uWLXW6zubNm9m+fTvjxo2rc6ye0hpKLR3/+msCNm1n5cUR3Nh/ktXh+MaBr5DSY67mLn1+opRPXHbZZURG1q2zy549exg7diyDBg1ixIgR7N69G4C33nqLvn37kpqayqWXXkppaSlPPfUU8+fPr1Ptpra0hlJL3z//F46HQ9fb76VFkJ++6Ld7KXYC2R46iLSOrayORimve/KjHew8VOjVc/Zu15I//ayPV89Zk8mTJzN79my6dOnC+vXrue+++1ixYgVPPvkka9euJT4+nvz8fMLCwvjjH//I9u3befHFF30elyaUWijesIGgLd/xyRVRPNTv51aH4zPO75bwtenFhX06YwvQ5i6lGpP8/Hy+/PJLJk6ceHKb3W4HYNiwYdx6661cd911XHPNNQ0emyYUDxlj2Pu3pzkeAb1/+SDBtmCrQ/KN3O8JyN3DMvskHQxS+a2Gqkn4gjGG1q1bV/tM5ZVXXmHDhg0sXryY1NRUvv322waNTZ+heKj4yy8I2baXdZe25me9J57/gKYqfSkAXwZewEVd/LA7tFJNXExMDAkJCSxcuBAAp9PJ1q1bAdi3bx9Dhw7lz3/+MzExMRw8eJDIyEiKiooaJDZNKB4wxrDnb0+TGwkD7nyIwAD/rdg505eyh2R69upLSKDN6nCU8lsXX3wx1113HatXryYpKYnly5d7fOxbb73FjBkzSE1NpU+fPixevBiABx98kH79+tGvXz9Gjx5N3759GTVqFFu3bmXAgAH6UL4xKFz/X8J27GfV1W35bffq+4z7hZJjSMYXLLeP195dSvlAcXHxyeXPPvvMo2M6duzI9u3bT9vWuXPnahPQokWLztoWFxfHxo0baxlp3WgNxQN7/v4XciJh8K8eJUD8+I9s7yrEOPiUNEb2iLM6GqVUE6M1FA+8fU1rgo8G8XTn0VaH4lMmfSnHiCam21BaBOtfDaVU7ehPDQ/89aY5HCs75t9vjNsrcO5eyUr7IMb2bWd1NEqpJsiP22+8JzAgkDYt2lgdhm9lfI6tsog1ZhCX9fLze1VK+YQlCUVEWonIShHZ4/6OqaFcsoisEJFdIrJTRDq6t88Vkf0issX96d+Q8fsj890SygnG3nEk0S389B0bpZRPWVVDeQRYbYzpBqx2r1fndWCaMaYXMBjIrrLvIWNMf/enbqOmKRdjqNy1lM8cfbi0X0ero1FKNVFWJZSrgHnu5XnA1WcWEJHeQKAxZiWAMabYGFPScCE2I9m7CC7K4BPnQC7vHW91NEr5rYYevn7hwoVMmzat3nF7yqqH8vHGmMMAxpjDIlJdo313IF9E/gN0AlYBjxhjHO79z4jIH3HXcIwx5Q0RuF/a7Xo7PjvhUtq0DLU4GKWaB28NX2+32wkMrP5H+YQJE7wTrId8VkMRkVUisr2az1UeniIQuBj4LXAB0Bm4zb3v90BP9/ZWwMPniGOyiGwUkY1Hjx6t6+34tfIdH7PV2ZkhKU13fCOlmpr6DF8/fPhwHnvsMUaMGMFLL73Ehx9+yJAhQxgwYACXX3452dmupwOzZ8/mgQceAODmm2/m17/+NRdddBGdO3c+OXSLN/mshmKMqfGlDRE5IiIJ7tpJAqc/GzkhE/jGGLPPfcwHwFDg1RO1G6BcRObgSjo1xTELmAWQlpZm6nY3fqw4m+CszaxyTOQ6fTteNRdLH4Gsbd49Z9t+8JNnvXvOcygsLGTdunUA5OXlceWVVyIizJgxg+eff57nnnvurGOys7NZv34927Zt4/rrr/d6DcaqJq9FwCTgWff3h9WU+RqIEZE4Y8xRYBSwEaBKMhJcz1+2V3O88sTu5QiG/a1GkBzrp/O7KOWHbrzxxpPLGRkZXH/99WRlZVFeXk737t2rPebqq69GREhJSeHgwYNej8mqhPIs8I6I3AFkANcBiEgacJcx5k5jjENEfgusdieOTcAr7uPni0gcIMAW4K4GvwM/Ub5jMTkmlm4pF1odilINpwFrEr4SHh5+cvnee+/l0Ucf5YorrmDVqlU8+2z19xcSEnJy2RjvN9hYklCMMbnAZdVs3wjcWWV9JZBSTblRPg2wuagsxfbDWlY5LmZcvwSro1FK1VFBQQGJiYkYY5g3b975D/ARfVO+Odu/jkBHGTsiLqJ7fMT5yyulvKY+w9ef6YknnmDChAmMHDmS+Hjruv6LL6o9jVVaWpppqGGcm4LyhVOo3PI2Lw9eyUM/PasiqJRf2bVrF7169bI6jEavuj8nEdlkjEk737FaQ2mujMGZvpR1zhTGpCRbHY1Syg9oQmmuDm8hrCybjSFDSEmMsjoapZQf0OHrm6nKnR8TYISQXuMICPDjYfmVUg1GE0ozVbL9Y9JNdy7u39PqUJRSfkKbvJqjgkyi8nfyue0CBndsZXU0Sik/oQmlGbJ/5xoMsrLrWAJt+ldAKeUd+tOkGSrYsoj9zngGDRxsdShKNSsnhq/fsmULF154IX369CElJYW33377rLLeGL4eYPPmzSxbtswr8Z+PPkNpbsqLiMr6go/kcm7sGmd1NEo1Sy1atOD111+nW7duHDp0iEGDBjF27Fiio6NPlvF0+Prz2bx5M9u3b2fcuHFeif1ctIbSzDj2fkKgqSS//WhCg2xWh6NUs9S9e3e6desGQLt27WjTpg21mV5jz549jB07lkGDBjFixAh2794NwFtvvUXfvn1JTU3l0ksvpbS0lKeeeor58+fXqXZTW1pDaWaObf6QIBNOt7QaZxdQyu8999VzfHfsO6+es2ernjw8uMapmWr01VdfUVFRQZcuXTw+ZvLkycyePZsuXbqwfv167rvvPlasWMGTTz7J2rVriY+PJz8/n7CwMP74xz+yfft2XnzxxVrHVluaUJqLo7thy3yi9i9hqRnEZb3aWR2RUs3e4cOHueWWW5g3bx4BAZ41GOXn5/Pll18yceLEk9vsdjsAw4YN49Zbb+W6667jmmuu8UnM56IJxZ+VFcD292HLm5D5NU6x8YUZwBfJk7kqRP/Tq+arLjUJbyssLOSnP/0pTz/9NEOHDvX4OGMMrVu3rvaZyiuvvMKGDRtYvHgxqampfPvtt94M+bz0p4q/cTpg/6fwzXzMd4sRexkHgzryuv0X/Mc+jOg2SfxtbKrVUSrVrFVUVDBhwoSTtYnaiImJISEhgYULFzJhwgScTifbtm0jNTWVffv2MXToUIYMGcKiRYs4ePAgkZGRFBUV+ehOTqcJxV/kfg9b3sRsXYAUHqQkIIIPHCNYUDGCnOBeXHlRInP7t6N3Qktc85UppazyzjvvsG7dOnJzc5k7dy4Ac+fOpX///h4d/9Zbb3H33XfzxBNPUFFRwc0330xqaioPPvgg+/fvxxjD5ZdfTt++fYmPj2fatGkMGDCAxx57jGuvvdZn96XD1zdl5UWwYyFmy5tIxhc4CeBzUllQcTEbggczJqUDV6YmMqRTKx2vSzV7Ony9Z+ozfL3WUJoapxN+/C98Mx/nzg8JsJeSIYksqLyRj2UEKb16cWX/drzQI46QQO0WrJRqOJpQmoq8H2DLAhzfzMdWeIDj0oIPKy/kPedIWnQaylUDElnSty2RoUFWR6qUaqY0oTRmFcdh54fYN79BYMZ6nAifO/vyrv1KDiVcxk8GdGZGSgJtWoZaHalSSmlCaXSMgYwvsG/6N+z8gEB7CZmmLe/ar+frlmO4cGB/Hujfjs5xOge8Uqpx0YTSWOQfwLllAeUb/01YcQblhLLYPpQVIZfRPmUUVw9M4rdJUdpDSynVaGlCsVJFCea7xRzfMI/wg+sJwPCNozcfyT2Y3ldyxcCuzOwSq0PMK6WaBE0oDc0YyPyaoi/nEfzdQkIcx8lzxvGquYbDHSYwfPAg/tQrXgduVMoPRUREUFxczJYtW7j77rspLCzEZrPx2GOPccMNN5xW9t5772X9+vVUVFSwf/9+evToAcDjjz/u8bskCxcuZO/evTz00ENev5fqaEJpKIWHOP71fOyb3iCq5AdsJoTFzsFsixtP98HjmJTSjugWwVZHqZRqAN4cvt5utxMYWP2P8gkTJng/+HPQhOJLlWWU7VhM/udzaJP9OeE42eDsyfrwKUSlXce4Qd2YGB1mdZRKqQbWvXv3k8tVh6+vmlDOZfjw4YwcOZLPPvuMa665hk6dOvGXv/yFiooK4uLieOONN2jTpg2zZ88+OdLwzTffTGxsLF9//TVZWVk8//zzXk84mlC8zRjsmZvI+vRVYvZ9RLizCIeJ5fXAiZT3u4FLhg5lattIq6NUqlnL+stfKN/l3eHrQ3r1pO2jj9b6uLoMXw+uwSXXrVsHQF5eHldeeSUiwowZM3j++ed57rnnzjomOzub9evXs23bNq6//npNKI2VszCLg+vmErz9LeLL9tPaBPGJDCGr80T6Df8Zt3ZsrcOfKKVOU5fh60+48cYbTy5nZGRw/fXXk5WVRXl5+Wk1oKquvvpqRISUlBQOHjxYr9irowmlPuwVHPxqIaVfvU7H/M9pj5NvTDc+afsbEi76OaP7dCY4UHtoKdXY1KUm4W11Hb7+hPDw8JPL9957L48++ihXXHEFq1at4tlnn632mJCQkJPLvhjHURNKHWTv/ooj614j+eBiEk0RWSaGZVHXE5L2Cy4cchEDdK4RpdQ51Gf4+uoUFBSQmJiIMYZ58+Z5IcK60Z98HirIOcTeVXOI3fseHe37iDKBfB16IaV9bmLAJRMY37KF1SEqpZqI+g5ff6YnnniCCRMmkJSUxODBgzl8+LAXo/WcDl/vgQ3/vJWBOYsJEgffBXTjcKdr6DrqVtonJvkgSqWUL+jw9Z7R4et9zBmVzMbAG2g9/HZ69L2Anjr8iVJKnUUTigcuvPVpq0NQSqlGz5IuSCLSSkRWisge93dMNWUuFZEtVT5lInK1e18nEdngPv5tEdFXzJVSymJW9Wl9BFhtjOkGrHavn8YYs8YY098Y0x8YBZQAK9y7nwP+7j4+D7ijYcJWSjVlzemZcV3U98/HqoRyFXCib9s84OrzlL8WWGqMKRHX+O2jgPdqcbxSqpkLDQ0lNzdXk0oNjDHk5uYSGlr3CfuseoYSb4w5DGCMOSwibc5T/kbgBfdyLJBvjLG71zOBRN+EqZTyF0lJSWRmZnL06FGrQ2m0QkNDSUqqe+9VnyUUEVkFtK1m12O1PE8C0A9YfmJTNcVq/JVDRCYDkwGSk5Nrc2mllB8JCgqiU6dOVofh13yWUIwxo2vaJyJHRCTBXTtJALLPcarrgYXGmEr3eg4QLSKB7lpKEnDoHHHMAmaB6z2U2t6HUkopz1j1DGURMMm9PAn48BxlbwIWnFgxrgbQNbieq3hyvFJKqQZgVUJ5FhgjInuAMe51RCRNRGafKCQiHYH2wKdnHP8wMFVE9uJ6pvJqA8SslFLqHJrV0CsichT4sY6Ht8bV3OYP/OVe/OU+QO+lsfKXe6nvfXQwxsSdr1CzSij1ISIbPRnLpinwl3vxl/sAvZfGyl/upaHuQyfrUEop5RWaUJRSSnmFJhTPzbI6AC/yl3vxl/sAvZfGyl/upUHuQ5+hKKWU8gqtoSillPIKTSi1ICJ/FpFv3cPprxCRdlbHVFciMk1EvnPfz0IRibY6proQketEZIeIOEWkSfbGEZFxIpIuIntF5KyRt5sKEXlNRLJFZLvVsdSHiLQXkTUissv9d+vXVsdUVyISKiJfichW97086dPraZOX50SkpTGm0L08BehtjLnL4rDqREQuBz4xxthF5DkAY8zDFodVayLSC3ACM4HfGmNqP8ezhUTEBuzG9YJvJvA1cJMxZqelgdWBiIwAioHXjTF9rY6nrtzDQSUYYzaLSCSwCbi6if43ESDcGFMsIkHAf4FfG2O+9MX1tIZSCyeSiVs45xiUsrEzxqyoMmLzl7jGRGtyjDG7jDHpVsdRD4OBvcaYfcaYCuAtXNM7NDnGmHXAMavjqC9jzGFjzGb3chGwiyY6orlxKXavBrk/Pvu5pQmllkTkGRE5APwC+KPV8XjJL4GlVgfRTCUCB6qs63QMjYh7+KcBwAZrI6k7EbGJyBZcg/CuNMb47F40oZxBRFaJyPZqPlcBGGMeM8a0B+YD91kb7bmd717cZR4D7Ljup1Hy5D6asFpNx6AajohEAO8DD5zROtGkGGMc7plvk4DBIuKz5kirJthqtM417P4Z3gQ+Bv7kw3Dq5Xz3IiKTgPHAZaYRP0yrxX+TpigT1wCoJ5xzOgbVMNzPG94H5htj/mN1PN5gjMkXkbXAOMAnHSe0hlILItKtyuqVwHdWxVJfIjIO16jNVxpjSqyOpxn7GugmIp1EJBjX7KSLLI6pWXM/yH4V2GWMeeF85RszEYk70YNTRMKA0fjw55b28qoFEXkf6IGrV9GPwF3GmIPWRlU37qH/Q4Bc96Yvm2KPNRGZAPwTiAPygS3GmLHWRlU7InIF8CJgA14zxjxjcUh1IiILgEtwjWx7BPiTMabJTS0hIsOBz4BtuP6tAzxqjFliXVR1IyIpwDxcf7cCgHeMMU/57HqaUJRSSnmDNnkppZTyCk0oSimlvEITilJKKa/QhKKUUsorNKEopZTyCk0oSnmRiBSfv9Q5j39PRDq7lyNEZKaIfO8eKXadiAwRkWD3sr6YrBoVTShKNRIi0gewGWP2uTfNxjXYYjdjTB/gNqC1exDJ1cANlgSqVA00oSjlA+IyzT3m2DYRucG9PUBE/uWucSwWkSUicq37sF8AH7rLdQGGAI8bY5wA7hGJP3aX/cBdXqlGQ6vMSvnGNUB/IBXXm+Nfi8g6YBjQEegHtME1NPpr7mOGAQvcy31wvfXvqOH824ELfBK5UnWkNRSlfGM4sMA90usR4FNcCWA48K4xxmmMyQLWVDkmATjqycndiabCPQGUUo2CJhSlfKO6YenPtR2gFAh1L+8AUkXkXP9GQ4CyOsSmlE9oQlHKN9YBN7gnN4oDRgBf4ZqCdaL7WUo8rsEUT9gFdAUwxnwPbASedI9+i4h0OzEHjIjEAkeNMZUNdUNKnY8mFKV8YyHwLbAV+AT4nbuJ631cc6BsB2bimgmwwH3Mx5yeYO4E2gJ7RWQb8Aqn5kq5FGhyo98q/6ajDSvVwEQkwhhT7K5lfAUMM8ZkueerWONer+lh/Ilz/Af4vTEmvQFCVsoj2stLqYa32D3pUTDwZ3fNBWNMqYj8Cdec8hk1HeyeiOsDTSaqsdEailJKKa/QZyhKKaW8QhOKUkopr9CEopRSyis0oSillPIKTShKKaW8QhOKUkopr/h/XWCDwCXLQlwAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb7e6588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pd.DataFrame(grid.cv_results_).to_csv('LogisticGridSearchCV_Pima.csv')\n",
    "#cvresult = pd.DataFrame.from_csv('LogisticGridSearchCV_Otto.csv')\n",
    "#test_means = cv_results['mean_test_score']\n",
    "#test_stds = cv_results['std_test_score'] \n",
    "#train_means = cvresult['mean_train_score']\n",
    "#train_stds = cvresult['std_train_score'] \n",
    "\n",
    "\n",
    "# plot CV误差曲线\n",
    "test_means = grid.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = grid.cv_results_[ 'std_test_score' ]\n",
    "train_means = grid.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = grid.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "\n",
    "# plot results\n",
    "n_Cs = len(Cs)\n",
    "number_penaltys = len(penaltys)\n",
    "test_scores = np.array(test_means).reshape(n_Cs,number_penaltys)\n",
    "train_scores = np.array(train_means).reshape(n_Cs,number_penaltys)\n",
    "test_stds = np.array(test_stds).reshape(n_Cs,number_penaltys)\n",
    "train_stds = np.array(train_stds).reshape(n_Cs,number_penaltys)\n",
    "\n",
    "x_axis = np.log10(Cs)\n",
    "for i, value in enumerate(penaltys):\n",
    "   \n",
    "    #pyplot.errorbar(x_axis, test_scores[:,i], yerr=test_stds[:,i] ,label = penaltys[i] +' Test')\n",
    "    #pyplot.errorbar(x_axis, train_scores[:,i], yerr=train_stds[:,i] ,label = penaltys[i] +' Train')\n",
    "    pyplot.errorbar(x_axis, test_scores[:,i], label = penaltys[i] +' Test')\n",
    "    pyplot.errorbar(x_axis, train_scores[:,i], label = penaltys[i] +' Train')\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'neg-logloss' )\n",
    "pyplot.savefig('LogisticGridSearchCV_C.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上图给出了L1正则和L2正则下、不同正则参数C对应的模型在训练集上测试集上的正确率（score）。可以看出在训练集上C越大（正则越少）的模型性能越好；但在测试集上当C=10时性能最好（L1正则和L2正则均是）"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 二、线性SVM LinearSVC  正则参数调优"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 线性SVM LinearSVC的需要调整正则超参数包括C（正则系数，一般在log域（取log后的值）均匀设置候选参数）和正则函数penalty（L2/L1）\n",
    "采用交叉验证，网格搜索步骤与Logistic回归正则参数处理类似。\n",
    "这里我用校验集（X_test_svm、y_test_svm）来估计模型性能"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import LinearSVC\n",
    "from sklearn import metrics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit_grid_point_Linear(C,P,X_train, y_train, X_val, y_val):\n",
    "    \n",
    "    # 在训练集是那个利用SVC训练,LinearSVC默认penalty是L2\n",
    "    SVC1 =  LinearSVC(penalty=P, C = C)\n",
    "    SVC1 = SVC1.fit(X_train, y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC1.score(X_val, y_val)\n",
    "    \n",
    "    print(\"accuracy: {}\".format(accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "No handles with labels found to put in legend.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.7207792207792207\n",
      "accuracy: 0.7337662337662337\n",
      "accuracy: 0.7402597402597403\n",
      "accuracy: 0.7467532467532467\n",
      "accuracy: 0.7402597402597403\n",
      "accuracy: 0.7207792207792207\n",
      "accuracy: 0.6883116883116883\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xcd341d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#需要调优的参数(L2正则)\n",
    "C_s = np.logspace(-3, 3, 7)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份  \n",
    "#penalty_s = ['l1','l2']\n",
    "penalty_s = ['l2']\n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "    for j, penalty in enumerate(penalty_s):\n",
    "        tmp = fit_grid_point_Linear(oneC,penalty,X_train_svm, y_train_svm, X_test_svm, y_test_svm)\n",
    "        accuracy_s.append(tmp)\n",
    "\n",
    "x_axis = np.log10(C_s)\n",
    "accuracy_s1 =np.array(accuracy_s).reshape(len(C_s),len(penalty_s))\n",
    "pd.DataFrame(accuracy_s1).to_csv('LinearSVC_Pima.csv')\n",
    "\n",
    "for j, penalty in enumerate(penalty_s):\n",
    "    pyplot.plot(x_axis, np.array(accuracy_s1[:,j]), 'b-')\n",
    "\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'accuracy' )\n",
    "pyplot.savefig('SVM_Pima.png' )\n",
    "\n",
    "pyplot.show()\n",
    "  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 线性SVM同Logistic回归性能比较：\n",
    "#### 1.Logistic回归的最好成绩是0.4799994349368312，对应超参数{'C': 0.1, 'penalty': 'l2'}\n",
    "#### 2.LinearSVC最佳准确度是0.7467532467532467，对应超参数{'C': 1, 'penalty': 'l2'}\n",
    "### 线性SVM模型较好，原因分析可能是松弛因子的存在一定程度上避免了过拟合。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 三、RBF核SVM正则参数调优"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### RBF核是SVM最常用的核函数。\n",
    "RBF核SVM 的需要调整正则超参数包括C（正则系数，一般在log域（取log后的值）均匀设置候选参数）和核函数的宽度gamma\n",
    "C越小，决策边界越平滑； \n",
    "gamma越小，决策边界越平滑。\n",
    "\n",
    "采用交叉验证，网格搜索步骤与Logistic回归正则参数处理类似，在此略。\n",
    "\n",
    "这里我用校验集（X_test_svm、y_test_svm）来估计模型性能"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit_grid_point_RBF(C, gamma, X_train, y_train, X_val, y_val):\n",
    "    \n",
    "    # 在训练集是那个利用SVC训练\n",
    "    SVC3 =  SVC( C = C, kernel='rbf', gamma = gamma)\n",
    "    SVC3 = SVC3.fit(X_train, y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC3.score(X_val, y_val)\n",
    "    \n",
    "    print(\"accuracy: {}\".format(accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.7142857142857143\n",
      "accuracy: 0.7272727272727273\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.7402597402597403\n",
      "accuracy: 0.7402597402597403\n",
      "accuracy: 0.7077922077922078\n",
      "accuracy: 0.7142857142857143\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.7337662337662337\n",
      "accuracy: 0.7467532467532467\n",
      "accuracy: 0.7402597402597403\n",
      "accuracy: 0.7077922077922078\n",
      "accuracy: 0.6883116883116883\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.7272727272727273\n",
      "accuracy: 0.7467532467532467\n",
      "accuracy: 0.7337662337662337\n",
      "accuracy: 0.7142857142857143\n",
      "accuracy: 0.6948051948051948\n",
      "accuracy: 0.6883116883116883\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.7532467532467533\n",
      "accuracy: 0.7597402597402597\n",
      "accuracy: 0.7467532467532467\n",
      "accuracy: 0.6948051948051948\n",
      "accuracy: 0.7077922077922078\n",
      "accuracy: 0.6883116883116883\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.7532467532467533\n",
      "accuracy: 0.7402597402597403\n",
      "accuracy: 0.7467532467532467\n",
      "accuracy: 0.6883116883116883\n",
      "accuracy: 0.7077922077922078\n",
      "accuracy: 0.6883116883116883\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n"
     ]
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = np.logspace(-3, 5, 8)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份 \n",
    "gamma_s = np.logspace(-5, 2, 8)  \n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "    for j, gamma in enumerate(gamma_s):\n",
    "        tmp = fit_grid_point_RBF(oneC, gamma,X_train_svm, y_train_svm, X_test_svm, y_test_svm)\n",
    "        accuracy_s.append(tmp)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xcd43518>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "accuracy_s1 =np.array(accuracy_s).reshape(len(C_s),len(gamma_s))\n",
    "pd.DataFrame(accuracy_s1).to_csv('RBF_SVC_Pima.csv')\n",
    "x_axis = np.log10(C_s)\n",
    "for j, gamma in enumerate(gamma_s):\n",
    "    pyplot.plot(x_axis, np.array(accuracy_s1[:,j]), label = ' Test - log(gamma)' + str(np.log10(gamma)))\n",
    "\n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'accuracy' )\n",
    "pyplot.savefig('RBF_SVM_Pima.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 1.LinearSVC最佳准确度是0.7467532467532467，对应超参数{'C': 1, 'penalty': 'l2'}\n",
    "#### 2.RBF-SVM最佳准确度是 0.7597402597402597，对应超参数{'C': 10000, 'gamma': '0.0001'}"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
